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>PatternMatch (infer.Absint.PatternMatch)</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">Absint</a>» PatternMatch</nav><h1>Module <code>Absint.PatternMatch</code></h1></header><aside><p>Module for Pattern matching.</p></aside><dl><dtclass="spec value"id="val-get_this_type_nonstatic_methods_only"><ahref="#val-get_this_type_nonstatic_methods_only"class="anchor"></a><code><spanclass="keyword">val</span> get_this_type_nonstatic_methods_only : <ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a><span>-></span><span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span></code></dt><dd><p>Get the `this` type of a procedure. Should not be called on non-static methods, otherwise it can return a wrong type</p></dd></dl><dl><dtclass="spec value"id="val-get_type_name"><ahref="#val-get_type_name"class="anchor"></a><code><spanclass="keyword">val</span> get_type_name : <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span> string</code></dt><dd><p>Get the name of a type</p></dd></dl><dl><dtclass="spec value"id="val-get_vararg_type_names"><ahref="#val-get_vararg_type_names"class="anchor"></a><code><spanclass="keyword">val</span> get_vararg_type_names : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IR/Pvar/index.html#type-t">IR.Pvar.t</a><span>-></span><span>string list</span></code></dt><dd><p>Get the type names of a variable argument</p></dd></dl><dl><dtclass="spec value"id="val-is_subtype"><ahref="#val-is_subtype"class="anchor"></a><code><spanclass="keyword">val</span> is_subtype : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span> bool</code></dt><dd><p>Is the type a transitive subtype of the typename?</p></dd></dl><dl><dtclass="spec value"id="val-is_subtype_of_str"><ahref="#val-is_subtype_of_str"class="anchor"></a><code><spanclass="keyword">val</span> is_subtype_of_str : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span> string <span>-></span> bool</code></dt><dd><p>Resolve <code>typ_str</code> in <code>tenv</code>, then check <code>typ</code><: <code>typ_str</code></p></dd></dl><divclass="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></div><dl><dtclass="spec value"id="val-supertype_exists"><ahref="#val-supertype_exists"class="anchor"></a><code><spanclass="keyword">val</span> supertype_exists : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span>(<ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span><ahref="../../IR/Struct/index.html#type-t">IR.Struct.t</a><span>-></span> bool)</span><span>-></span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span> bool</code></dt><dd><p>Holds iff the predicate holds on a supertype of the named type, including the type itself</p></dd></dl><dl><dtclass="spec value"id="val-supertype_find_map_opt"><ahref="#val-supertype_find_map_opt"class="anchor"></a><code><spanclass="keyword">val</span> supertype_find_map_opt : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span>(<ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span><span><spanclass="type-var">'a</span> option</span>)</span><span>-></span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a><span>-></span><span><spanclass="type-var">'a</span> option</span></code></dt><dd><p>Return the first non-None result found when applying the given function to supertypes of the named type, including the type itself</p></dd></dl><dl><dtclass="spec value"id="val-proc_calls"><ahref="#val-proc_calls"class="anchor"></a><code><spanclass="keyword">val</span> proc_calls : <span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><span><ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> option</span>)</span><span>-></span><ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a><span>-></span><span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a><span>-></span> bool)</span><span>-></span><span><span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a>)</span> list</span></code></dt><dd><p>Return the callees that satisfy <code>filter</code>.</p></dd></dl><dl><dtclass="spec value"id="val-override_exists"><ahref="#val-override_exists"class="anchor"></a><code><spanclass="keyword">val</span> override_exists : <span>?⁠check_current_type:bool</span><span>-></span><span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool)</span><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool</code></dt><dd><p>Return true if applying the given predicate to an override of <code>procname</code> (including <code>procname</code> itself when <code>check_current_type</code> is true, which it is by default) returns true.</p></dd></dl><dl><dtclass="spec value"id="val-override_iter"><ahref="#val-override_iter"class="anchor"></a><code><spanclass="keyword">val</span> override_iter : <span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> unit)</span><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> unit</code></dt><dd><p>Apply the given predicate to procname and each override of <code>procname</code>. For the moment, this only works for Java</p></dd></dl><dl><dtclass="spec value"id="val-lookup_attributes"><ahref="#val-lookup_attributes"class="anchor"></a><code><spanclass="keyword">val</span> lookup_attributes : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><span><ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> option</span></code></dt><dtclass="spec value"id="val-lookup_attributes_exn"><ahref="#val-lookup_attributes_exn"class="anchor"></a><code><spanclass="keyword">val</span> lookup_attributes_exn : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a></code></dt><dtclass="spec value"id="val-type_name_get_annotation"><ahref="#val-type_name_get_annotation"class="anchor"></a><code><spanclass="keyword">val</span> type_name_get_annotation : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-name">IR.Typ.name</a><span>-></span><span><ahref="../../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> option</span></code></dt><dtclass="spec value"id="val-type_get_annotation"><ahref="#val-type_get_annotation"class="anchor"></a><code><spanclass="keyword">val</span> type_get_annotation : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><span><ahref="../../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> option</span></code></dt><dtclass="spec value"id="val-type_get_class_name"><ahref="#val-type_get_class_name"class="anchor"></a><code><spanclass="keyword">val</span> type_get_class_name : <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><span><ahref="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> option</span></code></dt><dd><p>Get the class name of the type</p></dd></dl><dl><dtclass="spec value"id="val-type_is_class"><ahref="#val-type_is_class"class="anchor"></a><code><spanclass="keyword">val</span> type_is_class : <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span> bool</code></dt><dd><p>Is the type a class type</p></dd></dl><dl><dtclass="spec value"id="val-get_fields_nullified"><ahref="#val-get_fields_nullified"class="anchor"></a><code><spanclass="keyword">val</span> get_fields_nullified : <ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a><span>-></span><ahref="../../IR__Fieldname/index.html#module-Set">IR.Fieldname.Set</a>.t</code></dt><dd><p>return the set of instance fields that are assigned to a null literal in <code>procdesc</code></p></dd></dl><dl><dtclass="spec value"id="val-has_same_signature"><ahref="#val-has_same_signature"class="anchor"></a><code><spanclass="keyword">val</span> has_same_signature : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><span><span>(<ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Staged.t</span></code></dt><dd><p>For a given <code>procname</code> checks if the method has the same method name, number, order and types of parameters.)</p></dd></dl><divclass="spec module"id="module-ObjectiveC"><ahref="#module-ObjectiveC"class="anchor"></a><code><spanclass="keyword">module</span><ahref="ObjectiveC/index.html">ObjectiveC</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec value"id="val-is_entry_point"><ahref="#val-is_entry_point"class="anchor"></a><code><spanclass="keyword">val</span> is_entry_point : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool</code></dt><dd><p>Does the function name correspond to a known entry point? Currently only matches <code>"main"</code></p></dd></dl></div></body></html>