Module IR.Procname

module F = Stdlib.Format
module CSharp : sig ... end

Type of csharp procedure names.

module Java : sig ... end

Type of java procedure names.

module Parameter : sig ... end
module ObjC_Cpp : sig ... end
module C : sig ... end
module Block : sig ... end
type t =
| CSharp of CSharp.t
| Java of Java.t
| C of C.t
| Linters_dummy_method
| Block of Block.t
| ObjC_Cpp of ObjC_Cpp.t
| WithBlockParameters of t * Block.t list

Type of procedure names. WithBlockParameters is used for creating an instantiation of a method that contains block parameters and it's called with concrete blocks. For example: foo(Block block) {block();} bar() {foo(my_block)} is executed as foo_my_block() {my_block(); } where foo_my_block is created with WithBlockParameters (foo, my_block)

val compare : t -> t -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val block_of_procname : t -> Block.t
val equal : t -> t -> bool
val compare_name : t -> t -> int

Similar to compare, but compares only names, except parameter types and template arguments.

val get_class_type_name : t -> Typ.Name.t option
val get_class_name : t -> string option
val get_parameters : t -> Parameter.t list
val replace_parameters : Parameter.t list -> t -> t
val parameter_of_name : t -> Typ.Name.t -> Parameter.t
val is_java_access_method : t -> bool
val is_java_class_initializer : t -> bool
val is_java_anonymous_inner_class_method : t -> bool
val is_java_autogen_method : t -> bool
val is_objc_method : t -> bool
module Hash : IStdlib.IStd.Caml.Hashtbl.S with type Hash.key = t

Hash tables with proc names as keys.

module LRUHash : IStdlib.LRUHashtbl.S with type key = t
module HashQueue : IStdlib.IStd.Hash_queue.S with type HashQueue.key = t
module Map : IStdlib.PrettyPrintable.PPMap with type PPMap.key = t

Maps from proc names.

module Set : IStdlib.PrettyPrintable.PPSet with type PPSet.elt = t

Sets of proc names.

module SQLite : sig ... end
module SQLiteList : IBase.SqliteUtils.Data with type t = t list
module UnitCache : sig ... end

One-sized cache for one procedure at a time. Returns getter and setter.

val make_java : class_name:Typ.Name.t -> return_type:Typ.t option -> method_name:string -> parameters:Typ.t list -> kind:Java.kind -> unit -> t

Create a Java procedure name.

val make_csharp : class_name:Typ.Name.t -> return_type:Typ.t option -> method_name:string -> parameters:Typ.t list -> kind:CSharp.kind -> unit -> t

Create a CSharp procedure name.

val make_objc_dealloc : Typ.Name.t -> t

Create a Objective-C dealloc name. This is a destructor for an Objective-C class. This procname is given by the class name, since it is always an instance method with the name "dealloc"

val make_objc_copyWithZone : is_mutable:bool -> Typ.Name.t -> t

Create an Objective-C method for copyWithZone: or mutableCopyWithZone: according to is_mutable.

val empty_block : t

Empty block name.

val get_block_type : t -> Block.block_type
val get_language : t -> IBase.Language.t

Return the language of the procedure.

val get_method : t -> string

Return the method/function of a procname.

val is_objc_block : t -> bool

Return whether the procname is a block procname.

val is_cpp_lambda : t -> bool

Return whether the procname is a cpp lambda procname.

val is_objc_dealloc : t -> bool

Return whether the dealloc method of an Objective-C class.

val is_objc_init : t -> bool

Return whether the init method of an Objective-C class.

val is_c_method : t -> bool

Return true this is an Objective-C/C++ method name.

val is_constructor : t -> bool

Check if this is a constructor.

val is_csharp : t -> bool

Check if this is a CSharp procedure name.

val is_java : t -> bool

Check if this is a Java procedure name.

val as_java_exn : explanation:string -> t -> Java.t

Converts to a Java.t. Throws if is_java is false

val with_block_parameters : t -> Block.t list -> t

Create a procedure name instantiated with block parameters from a base procedure name and a list of block procedures.

val objc_cpp_replace_method_name : t -> string -> t
val is_infer_undefined : t -> bool

Check if this is a special Infer undefined procedure.

val get_global_name_of_initializer : t -> string option

Return the name of the global for which this procedure is the initializer if this is an initializer, None otherwise.

val pp : Stdlib.Format.formatter -> t -> unit

Pretty print a proc name for the user to see.

val to_string : t -> string

Convert a proc name into a string for the user to see.

val describe : Stdlib.Format.formatter -> t -> unit

to use in user messages

val replace_class : t -> Typ.Name.t -> t

Replace the class name component of a procedure name. In case of Java, replace package and class name.

val is_method_in_objc_protocol : t -> bool
val pp_simplified_string : ?⁠withclass:bool -> F.formatter -> t -> unit

Pretty print a proc name as an easy string for the user to see in an IDE.

val to_simplified_string : ?⁠withclass:bool -> t -> string

Convert a proc name into an easy string for the user to see in an IDE.

val from_string_c_fun : string -> t

Convert a string to a c function name.

val hashable_name : t -> string

Convert the procedure name in a format suitable for computing the bug hash.

val pp_unique_id : F.formatter -> t -> unit

Print a proc name as a unique identifier.

val to_unique_id : t -> string

Convert a proc name into a unique identifier.

val to_filename : t -> string

Convert a proc name to a filename.

val get_qualifiers : t -> QualifiedCppName.t

get qualifiers of C/objc/C++ method/function

module Normalizer : IStdlib.HashNormalizer.S with type t = t