This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
<!DOCTYPE html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Procname (infer.IR.Procname)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.1"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">IR</a>» Procname</nav><h1>Module <code>IR.Procname</code></h1></header><divclass="spec module"id="module-F"><ahref="#module-F"class="anchor"></a><code><spanclass="keyword">module</span> F = Stdlib.Format</code></div><aside><p>Module for Procedure Names.</p></aside><dl><dtclass="spec module"id="module-Java"><ahref="#module-Java"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Java/index.html">Java</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></dt><dd><p>Type of java procedure names.</p></dd></dl><divclass="spec module"id="module-Parameter"><ahref="#module-Parameter"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Parameter/index.html">Parameter</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-ObjC_Cpp"><ahref="#module-ObjC_Cpp"class="anchor"></a><code><spanclass="keyword">module</span><ahref="ObjC_Cpp/index.html">ObjC_Cpp</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-C"><ahref="#module-C"class="anchor"></a><code><spanclass="keyword">module</span><ahref="C/index.html">C</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-Block"><ahref="#module-Block"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Block/index.html">Block</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><tableclass="variant"><trid="type-t.Java"class="anchored"><tdclass="def constructor"><ahref="#type-t.Java"class="anchor"></a><code>| </code><code><spanclass="constructor">Java</span><spanclass="keyword">of</span><ahref="Java/index.html#type-t">Java.t</a></code></td></tr><trid="type-t.C"class="anchored"><tdclass="def constructor"><ahref="#type-t.C"class="anchor"></a><code>| </code><code><spanclass="constructor">C</span><spanclass="keyword">of</span><ahref="C/index.html#type-t">C.t</a></code></td></tr><trid="type-t.Linters_dummy_method"class="anchored"><tdclass="def constructor"><ahref="#type-t.Linters_dummy_method"class="anchor"></a><code>| </code><code><spanclass="constructor">Linters_dummy_method</span></code></td></tr><trid="type-t.Block"class="anchored"><tdclass="def constructor"><ahref="#type-t.Block"class="anchor"></a><code>| </code><code><spanclass="constructor">Block</span><spanclass="keyword">of</span><ahref="Block/index.html#type-t">Block.t</a></code></td></tr><trid="type-t.ObjC_Cpp"class="anchored"><tdclass="def constructor"><ahref="#type-t.ObjC_Cpp"class="anchor"></a><code>| </code><code><spanclass="constructor">ObjC_Cpp</span><spanclass="keyword">of</span><ahref="ObjC_Cpp/index.html#type-t">ObjC_Cpp.t</a></code></td></tr><trid="type-t.WithBlockParameters"class="anchored"><tdclass="def constructor"><ahref="#type-t.WithBlockParameters"class="anchor"></a><code>| </code><code><spanclass="constructor">WithBlockParameters</span><spanclass="keyword">of</span><ahref="index.html#type-t">t</a> * <span><ahref="Block/index.html#type-t">Block.t</a> list</span></code></td></tr></table></dt><dd><p>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: <code>foo(Block block) {block();}</code><code>bar() {foo(my_block)}</code> is executed as <code>foo_my_block() {my_block(); }</code> where foo_my_block is created with WithBlockParameters (foo, <code>my_block</code>)</p></dd></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec value"id="val-block_of_procname"><ahref="#val-block_of_procname"class="anchor"></a><code><spanclass="keyword">val</span> block_of_procname : <ahref="index.html#type-t">t</a><span>-></span><ahref="Block/index.html#type-t">Block.t</a></code></dt><dtclass="spec value"id="val-equal"><ahref="#val-equal"class="anchor"></a><code><spanclass="keyword">val</span> equal : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-get_class_type_name"><ahref="#val-get_class_type_name"class="anchor"></a><code><spanclass="keyword">val</span> get_class_type_name : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="../Typ/Name/index.html#type-t">Typ.Name.t</a> option</span></code></dt><dtclass="spec value"id="val-get_class_name"><ahref="#val-get_class_name"class="anchor"></a><code><spanclass="keyword">val</span> get_class_name : <ahref="index.html#type-t">t</a><span>-></span><span>string option</span></code></dt><dtclass="spec value"id="val-get_parameters"><ahref="#val-get_parameters"class="anchor"></a><code><spanclass="keyword">val</span> get_parameters : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="Parameter/index.html#type-t">Parameter.t</a> list</span></code></dt><dtclass="spec value"id="val-replace_parameters"><ahref="#val-replace_parameters"class="anchor"></a><code><spanclass="keyword">val</span> replace_parameters : <span><ahref="Parameter/index.html#type-t">Parameter.t</a> list</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-parameter_of_name"><ahref="#val-parameter_of_name"class="anchor"></a><code><spanclass="keyword">val</span> parameter_of_name : <ahref="index.html#type-t">t</a><span>-></span><ahref="../Typ/Name/index.html#type-t">Typ.Name.t</a><span>-></span><ahref="Parameter/index.html#type-t">Parameter.t</a></code></dt><dtclass="spec value"id="val-is_java_access_method"><ahref="#val-is_java_access_method"class="anchor"></a><code><spanclass="keyword">val</span> is_java_access_method : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_java_class_initializer"><ahref="#val-is_java_class_initializer"class="anchor"></a><code><spanclass="keyword">val</span> is_java_class_initializer : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_java_anonymous_inner_class_method"><ahref="#val-is_java_anonymous_inner_class_method"class="anchor"></a><code><spanclass="keyword">val</span> is_java_anonymous_inner_class_method : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_java_autogen_method"><ahref="#val-is_java_autogen_method"class="anchor"></a><code><spanclass="keyword">val</span> is_java_autogen_method : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_objc_method"><ahref="#val-is_objc_method"class="anchor"></a><code><spanclass="keyword">val</span> is_objc_method : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt></dl><dl><dtclass="spec module"id="module-Hash"><ahref="#module-Hash"class="anchor"></a><code><spanclass="keyword">module</span> Hash : <ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Caml.Hashtbl.S <spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="index.html#module-Hash">Hash</a>.key = <ahref="index.html#type-t">t</a></code></dt><dd><p>Hash tables with proc names as keys.</p></dd></dl><divclass="spec module"id="module-LRUHash"><ahref="#module-LRUHash"class="anchor"></a><code><spanclass="keyword">module</span><ahref="LRUHash/index.html">LRUHash</a> : <ahref="../../IStdlib/LRUHashtbl/index.html#module-type-S">IStdlib.LRUHashtbl.S</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../IStdlib/LRUHashtbl/module-type-S/index.html#type-key">key</a> = <ahref="index.html#type-t">t</a></code></div><divclass="spec module"id="module-HashQueue"><ahref="#module-HashQueue"class="anchor"></a><code><spanclass="keyword">module</span> HashQueue : <ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Hash_queue.S <spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="index.html#module-HashQueue">HashQueue</a>.key = <ahref="index.html#type-t">t</a></code></div><dl><dtclass="spec module"id="module-Map"><ahref="#module-Map"class="anchor"></a><code><spanclass="keyword">module</span> Map : <ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPMap">IStdlib.PrettyPrintable.PPMap</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPMap">PPMap</a>.key = <ahref="index.html#type-t">t</a></code></dt><dd><p>Maps from proc names.</p></dd></dl><dl><dtclass="spec module"id="module-Set"><ahref="#module-Set"class="anchor"></a><code><spanclass="keyword">module</span> Set : <ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPSet">IStdlib.PrettyPrintable.PPSet</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPSet">PPSet</a>.elt = <ahref="index.html#type-t">t</a></code></dt><dd><p>Sets of proc names.</p></dd></dl><divclass="spec module"id="module-SQLite"><ahref="#module-SQLite"class="anchor"></a><code><spanclass="keyword">module</span><ahref="SQLite/index.html">SQLite</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-SQLiteList"><ahref="#module-SQLiteList"class="anchor"></a><code><spanclass="keyword">module</span><ahref="SQLiteList/index.html">SQLiteList</a> : <ahref="../../IBase/SqliteUtils/index.html#module-type-Data">IBase.SqliteUtils.Data</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../IBase/SqliteUtils/module-type-Data/index.html#type-t">t</a> = <span><ahref="index.html#type-t">t</a> list</span></code></div><dl><dtclass="spec module"id="module-UnitCache"><ahref="#module-UnitCache"class="anchor"></a><code><spanclass="keyword">module</span><ahref="UnitCache/index.html">UnitCache</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></dt><dd><p>One-sized cache for one procedure at a time. Returns getter and setter.</p></dd></dl><dl><dtclass="spec value"id="val-make_java"><ahref="#val-make_java"class="anchor"></a><code><spanclass="keyword">val</span> make_java : <span>class_name:<ahref="../Typ/Name/index.html#type-t">Typ.Name.t</a></span><span>-></span><span>return_type:<span><ahref="../Typ/index.html#type-t">Typ.t</a> option</span></span><span>-></span><span>method_name:string</span><span>-></span><span>parameters:<span><ahref="../Typ/index.html#type-t">Typ.t</a> list</span></span><span>-></span><span>kind:<ahref="Java/index.html#type-kind">Java.kind</a></span><span>-></span> unit <span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>Create a Java procedure name.</p></dd></dl><dl><dtclass="spec value"id="val-make_objc_dealloc"><ahref="#val-make_objc_dealloc"class="anchor"></a><code><spanclass="keyword">val</span> make_objc_dealloc : <ahref="../Typ/Name/index.html#type-t">Typ.Name.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>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"</p></dd></dl><dl><dtclass="spec value"id="val-empty_block"><ahref="#val-empty_block"class="anchor"></a><code><spanclass="keyword">val</span> empty_block : <ahref="index.html#type-t">t</a></code></dt><dd><p>Empty block name.</p></dd></dl><dl><dtclass="spec value"id="val-get_language"><ahref="#val-get_language"class="anchor"></a><code><spanclass="keyword">val</span> get_language : <ahref="index.html#type-t">t</a><span>-></span><ahref="../../IBase/Language/index.html#type-t">IBase.Language.t</a></code></dt><dd><p>Return the language of the procedure.</p></dd></dl><dl><dtclass="spec value"id="val-get_method"><ahref="#val-get_method"class="anchor"></a><code><spanclass="keyword">val</span> get_method : <ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Return the method/function of a procname.</p></dd></dl><dl><dtclass="spec value"id="val-is_objc_block"><ahref="#val-is_objc_block"class="anchor"></a><code><spanclass="keyword">val</span> is_objc_block : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Return whether the procname is a block procname.</p></dd></dl><dl><dtclass="spec value"id="val-is_objc_dealloc"><ahref="#val-is_objc_dealloc"class="anchor"></a><code><spanclass="keyword">val</span> is_objc_dealloc : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Return whether the dealloc method of an Objective-C class.</p></dd></dl><dl><dtclass="spec value"id="val-is_c_method"><ahref="#val-is_c_method"class="anchor"></a><code><spanclass="keyword">val</span> is_c_method : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Return true this is an Objective-C/C++ method name.</p></dd></dl><dl><dtclass="spec value"id="val-is_constructor"><ahref="#val-is_constructor"class="anchor"></a><code><spanclass="keyword">val</span> is_constructor : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Check if this is a constructor.</p></dd></dl><dl><dtclass="spec value"id="val-is_java"><ahref="#val-is_java"class="anchor"></a><code><spanclass="keyword">val</span> is_java : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Check if this is a Java procedure name.</p></dd></dl><dl><dtclass="spec value"id="val-as_java_exn"><ahref="#val-as_java_exn"class="anchor"></a><code><spanclass="keyword">val</span> as_java_exn : <span>explanation:string</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="Java/index.html#type-t">Java.t</a></code></dt><dd><p>Converts to a Java.t. Throws if <code>is_java</code> is false</p></dd></dl><dl><dtclass="spec value"id="val-with_block_parameters"><ahref="#val-with_block_parameters"class="anchor"></a><code><spanclass="keyword">val</span> with_block_parameters : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="Block/index.html#type-t">Block.t</a> list</span><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>Create a procedure name instantiated with block parameters from a base procedure name and a list of block procedures.</p></dd></dl><dl><dtclass="spec value"id="val-objc_cpp_replace_method_name"><ahref="#val-objc_cpp_replace_method_name"class="anchor"></a><code><spanclass="keyword">val</span> objc_cpp_replace_method_name : <ahref="index.html#type-t">t</a><span>-></span> string <span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-is_infer_undefined"><ahref="#val-is_infer_undefined"class="anchor"></a><code><spanclass="keyword">val</span> is_infer_undefined : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>Check if this is a special Infer undefined procedure.</p></dd></dl><dl><dtclass="spec value"id="val-get_global_name_of_initializer"><ahref="#val-get_global_name_of_initializer"class="anchor"></a><code><spanclass="keyword">val</span> get_global_name_of_initializer : <ahref="index.html#type-t">t</a><span>-></span><span>string option</span></code></dt><dd><p>Return the name of the global for which this procedure is the initializer if this is an initializer, None otherwise.</p></dd></dl><dl><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dd><p>Pretty print a proc name for the user to see.</p></dd></dl><dl><dtclass="spec value"id="val-to_string"><ahref="#val-to_string"class="anchor"></a><code><spanclass="keyword">val</span> to_string : <ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Convert a proc name into a string for the user to see.</p></dd></dl><dl><dtclass="spec value"id="val-describe"><ahref="#val-describe"class="anchor"></a><code><spanclass="keyword">val</span> describe : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dd><p>to use in user messages</p></dd></dl><dl><dtclass="spec value"id="val-replace_class"><ahref="#val-replace_class"class="anchor"></a><code><spanclass="keyword">val</span> replace_class : <ahref="index.html#type-t">t</a><span>-></span><ahref="../Typ/Name/index.html#type-t">Typ.Name.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>Replace the class name component of a procedure name. In case of Java, replace package and class name.</p></dd></dl><dl><dtclass="spec value"id="val-is_method_in_objc_protocol"><ahref="#val-is_method_in_objc_protocol"class="anchor"></a><code><spanclass="keyword">val</span> is_method_in_objc_protocol : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-pp_simplified_string"><ahref="#val-pp_simplified_string"class="anchor"></a><code><spanclass="keyword">val</span> pp_simplified_string : <span>?⁠withclass:bool</span><span>-></span><ahref="index.html#module-F">F</a>.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dd><p>Pretty print a proc name as an easy string for the user to see in an IDE.</p></dd></dl><dl><dtclass="spec value"id="val-to_simplified_string"><ahref="#val-to_simplified_string"class="anchor"></a><code><spanclass="keyword">val</span> to_simplified_string : <span>?⁠withclass:bool</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Convert a proc name into an easy string for the user to see in an IDE.</p></dd></dl><dl><dtclass="spec value"id="val-from_string_c_fun"><ahref="#val-from_string_c_fun"class="anchor"></a><code><spanclass="keyword">val</span> from_string_c_fun : string <span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>Convert a string to a c function name.</p></dd></dl><dl><dtclass="spec value"id="val-hashable_name"><ahref="#val-hashable_name"class="anchor"></a><code><spanclass="keyword">val</span> hashable_name : <ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Convert the procedure name in a format suitable for computing the bug hash.</p></dd></dl><dl><dtclass="spec value"id="val-pp_unique_id"><ahref="#val-pp_unique_id"class="anchor"></a><code><spanclass="keyword">val</span> pp_unique_id : <ahref="index.html#module-F">F</a>.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dd><p>Print a proc name as a unique identifier.</p></dd></dl><dl><dtclass="spec value"id="val-to_unique_id"><ahref="#val-to_unique_id"class="anchor"></a><code><spanclass="keyword">val</span> to_unique_id : <ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Convert a proc name into a unique identifier.</p></dd></dl><dl><dtclass="spec value"id="val-to_filename"><ahref="#val-to_filename"class="anchor"></a><code><spanclass="keyword">val</span> to_filename : <ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dd><p>Convert a proc name to a filename.</p></dd></dl><dl><dtclass="spec value"id="val-get_qualifiers"><ahref="#val-get_qualifiers"class="anchor"></a><code><spanclass="keyword">val</span> get_qualifiers : <ahref="index.html#type-t">t</a><span>-></span><ahref="../QualifiedCppName/index.html#type-t">QualifiedCppName.t</a></code></dt><dd><p>get qualifiers of C/objc/C++ method/function</p></dd></dl></div></body></html>