|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Absint__PatternMatch (infer.Absint__PatternMatch)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – <a href="../index.html">infer</a> » Absint__PatternMatch</nav><h1>Module <code>Absint__PatternMatch</code></h1></header><aside><p>Module for Pattern matching.</p></aside><dl><dt class="spec value" id="val-get_this_type_nonstatic_methods_only"><a href="#val-get_this_type_nonstatic_methods_only" class="anchor"></a><code><span class="keyword">val</span> get_this_type_nonstatic_methods_only : <a href="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> <span>-></span> <span><a href="../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><dt class="spec value" id="val-get_type_name"><a href="#val-get_type_name" class="anchor"></a><code><span class="keyword">val</span> get_type_name : <a href="../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><dt class="spec value" id="val-get_vararg_type_names"><a href="#val-get_vararg_type_names" class="anchor"></a><code><span class="keyword">val</span> get_vararg_type_names : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>-></span> <a href="../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><dt class="spec value" id="val-method_is_initializer"><a href="#val-method_is_initializer" class="anchor"></a><code><span class="keyword">val</span> method_is_initializer : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> <span>-></span> bool</code></dt><dd><p>Check if the method is one of the known initializer methods.</p></dd></dl><dl><dt class="spec value" id="val-is_subtype"><a href="#val-is_subtype" class="anchor"></a><code><span class="keyword">val</span> is_subtype : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> <a href="../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><dt class="spec value" id="val-is_subtype_of_str"><a href="#val-is_subtype_of_str" class="anchor"></a><code><span class="keyword">val</span> is_subtype_of_str : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../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><dl><dt class="spec value" id="val-implements"><a href="#val-implements" class="anchor"></a><code><span class="keyword">val</span> implements : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a given class</p></dd></dl><dl><dt class="spec value" id="val-implements_arrays"><a href="#val-implements_arrays" class="anchor"></a><code><span class="keyword">val</span> implements_arrays : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements Java's Arrays</p></dd></dl><dl><dt class="spec value" id="val-implements_iterator"><a href="#val-implements_iterator" class="anchor"></a><code><span class="keyword">val</span> implements_iterator : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements Java's Iterator</p></dd></dl><dl><dt class="spec value" id="val-implements_collection"><a href="#val-implements_collection" class="anchor"></a><code><span class="keyword">val</span> implements_collection : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Collection</p></dd></dl><dl><dt class="spec value" id="val-implements_collections"><a href="#val-implements_collections" class="anchor"></a><code><span class="keyword">val</span> implements_collections : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Collections</p></dd></dl><dl><dt class="spec value" id="val-implements_pseudo_collection"><a href="#val-implements_pseudo_collection" class="anchor"></a><code><span class="keyword">val</span> implements_pseudo_collection : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a pseudo Collection with support for get() and size() methods</p></dd></dl><dl><dt class="spec value" id="val-implements_enumeration"><a href="#val-implements_enumeration" class="anchor"></a><code><span class="keyword">val</span> implements_enumeration : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Enumeration</p></dd></dl><dl><dt class="spec value" id="val-implements_jackson"><a href="#val-implements_jackson" class="anchor"></a><code><span class="keyword">val</span> implements_jackson : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class from Jackson</p></dd></dl><dl><dt class="spec value" id="val-implements_org_json"><a href="#val-implements_org_json" class="anchor"></a><code><span class="keyword">val</span> implements_org_json : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class from Json</p></dd></dl><dl><dt class="spec value" id="val-implements_inject"><a href="#val-implements_inject" class="anchor"></a><code><span class="keyword">val</span> implements_inject : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Javax Inject</p></dd></dl><dl><dt class="spec value" id="val-implements_io"><a href="#val-implements_io" class="anchor"></a><code><span class="keyword">val</span> implements_io : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java IO</p></dd></dl><dl><dt class="spec value" id="val-implements_nio"><a href="#val-implements_nio" class="anchor"></a><code><span class="keyword">val</span> implements_nio : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java nio</p></dd></dl><dl><dt class="spec value" id="val-implements_map"><a href="#val-implements_map" class="anchor"></a><code><span class="keyword">val</span> implements_map : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Map</p></dd></dl><dl><dt class="spec value" id="val-implements_androidx_map"><a href="#val-implements_androidx_map" class="anchor"></a><code><span class="keyword">val</span> implements_androidx_map : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a AndroidX's Map</p></dd></dl><dl><dt class="spec value" id="val-implements_set"><a href="#val-implements_set" class="anchor"></a><code><span class="keyword">val</span> implements_set : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Set</p></dd></dl><dl><dt class="spec value" id="val-implements_map_entry"><a href="#val-implements_map_entry" class="anchor"></a><code><span class="keyword">val</span> implements_map_entry : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Map$Entry</p></dd></dl><dl><dt class="spec value" id="val-implements_queue"><a href="#val-implements_queue" class="anchor"></a><code><span class="keyword">val</span> implements_queue : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's Queue</p></dd></dl><dl><dt class="spec value" id="val-implements_lang"><a href="#val-implements_lang" class="anchor"></a><code><span class="keyword">val</span> implements_lang : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's lang</p></dd></dl><dl><dt class="spec value" id="val-implements_list"><a href="#val-implements_list" class="anchor"></a><code><span class="keyword">val</span> implements_list : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a Java's list</p></dd></dl><dl><dt class="spec value" id="val-implements_google"><a href="#val-implements_google" class="anchor"></a><code><span class="keyword">val</span> implements_google : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class of Google</p></dd></dl><dl><dt class="spec value" id="val-implements_android"><a href="#val-implements_android" class="anchor"></a><code><span class="keyword">val</span> implements_android : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class of Android</p></dd></dl><dl><dt class="spec value" id="val-implements_infer_annotation"><a href="#val-implements_infer_annotation" class="anchor"></a><code><span class="keyword">val</span> implements_infer_annotation : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class of Infer annotation</p></dd></dl><dl><dt class="spec value" id="val-implements_xmob_utils"><a href="#val-implements_xmob_utils" class="anchor"></a><code><span class="keyword">val</span> implements_xmob_utils : string <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> string <span>-></span> bool</code></dt><dd><p>Check whether class implements a class of xmod.utils</p></dd></dl><dl><dt class="spec value" id="val-supertype_exists"><a href="#val-supertype_exists" class="anchor"></a><code><span class="keyword">val</span> supertype_exists : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <span>(<a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> <a href="../IR/Struct/index.html#type-t">IR.Struct.t</a> <span>-></span> bool)</span> <span>-></span> <a href="../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><dt class="spec value" id="val-supertype_find_map_opt"><a href="#val-supertype_find_map_opt" class="anchor"></a><code><span class="keyword">val</span> supertype_find_map_opt : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <span>(<a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> <span><span class="type-var">'a</span> option</span>)</span> <span>-></span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> <span><span class="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><dt class="spec value" id="val-proc_calls"><a href="#val-proc_calls" class="anchor"></a><code><span class="keyword">val</span> proc_calls : <span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> <span><a href="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> option</span>)</span> <span>-></span> <a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>-></span> <span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> <a href="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> <span>-></span> bool)</span> <span>-></span> <span><span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <a href="../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><dt class="spec value" id="val-override_exists"><a href="#val-override_exists" class="anchor"></a><code><span class="keyword">val</span> override_exists : <span>?⁠check_current_type:bool</span> <span>-></span> <span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> bool)</span> <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../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><dt class="spec value" id="val-override_iter"><a href="#val-override_iter" class="anchor"></a><code><span class="keyword">val</span> override_iter : <span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> unit)</span> <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../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><dt class="spec value" id="val-lookup_attributes"><a href="#val-lookup_attributes" class="anchor"></a><code><span class="keyword">val</span> lookup_attributes : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> <span><a href="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a> option</span></code></dt><dt class="spec value" id="val-type_name_get_annotation"><a href="#val-type_name_get_annotation" class="anchor"></a><code><span class="keyword">val</span> type_name_get_annotation : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/index.html#type-name">IR.Typ.name</a> <span>-></span> <span><a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> option</span></code></dt><dt class="spec value" id="val-type_get_annotation"><a href="#val-type_get_annotation" class="anchor"></a><code><span class="keyword">val</span> type_get_annotation : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> <span>-></span> <span><a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> option</span></code></dt><dt class="spec value" id="val-type_get_class_name"><a href="#val-type_get_class_name" class="anchor"></a><code><span class="keyword">val</span> type_get_class_name : <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> <span>-></span> <span><a href="../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><dt class="spec value" id="val-type_is_class"><a href="#val-type_is_class" class="anchor"></a><code><span class="keyword">val</span> type_is_class : <a href="../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><dt class="spec value" id="val-get_fields_nullified"><a href="#val-get_fields_nullified" class="anchor"></a><code><span class="keyword">val</span> get_fields_nullified : <a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>-></span> <a href="../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><dt class="spec value" id="val-is_throwable"><a href="#val-is_throwable" class="anchor"></a><code><span class="keyword">val</span> is_throwable : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> bool</code></dt><dd><p><code>is_throwable tenv class_name</code> checks if class_name is of type java.lang.Throwable</p></dd></dl><dl><dt class="spec value" id="val-is_java_enum"><a href="#val-is_java_enum" class="anchor"></a><code><span class="keyword">val</span> is_java_enum : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> bool</code></dt><dd><p>Checks if the type is Java enum (extends java.lang.Enum)</p></dd></dl><dl><dt class="spec value" id="val-check_class_attributes"><a href="#val-check_class_attributes" class="anchor"></a><code><span class="keyword">val</span> check_class_attributes : <span>(<a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> <span>-></span> bool)</span> <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> bool</code></dt><dd><p>tests whether any class attributes (e.g., <code>@ThreadSafe</code>) pass check of first argument, including supertypes</p></dd></dl><dl><dt class="spec value" id="val-check_current_class_attributes"><a href="#val-check_current_class_attributes" class="anchor"></a><code><span class="keyword">val</span> check_current_class_attributes : <span>(<a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> <span>-></span> bool)</span> <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> bool</code></dt><dd><p>tests whether any class attributes (e.g., <code>@ThreadSafe</code>) pass check of first argument, for current class only</p></dd></dl><dl><dt class="spec value" id="val-find_superclasses_with_attributes"><a href="#val-find_superclasses_with_attributes" class="anchor"></a><code><span class="keyword">val</span> find_superclasses_with_attributes : <span>(<a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> <span>-></span> bool)</span> <span>-></span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>-></span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>-></span> <span><a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> list</span></code></dt><dd><p>find superclasss with attributes (e.g., <code>@ThreadSafe</code>), including current class</p></dd></dl><dl><dt class="spec value" id="val-has_same_signature"><a href="#val-has_same_signature" class="anchor"></a><code><span class="keyword">val</span> has_same_signature : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> <span><span>(<a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> bool)</span> <a href="../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><dl><dt class="spec value" id="val-is_override_of_java_lang_object_equals"><a href="#val-is_override_of_java_lang_object_equals" class="anchor"></a><code><span class="keyword">val</span> is_override_of_java_lang_object_equals : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>-></span> bool</code></dt><dd><p>Whether the method is an override of `java.lang.Object.equals(Object)` or `java.lang.Object.equals(Object)` itself</p></dd></dl><div class="spec module" id="module-ObjectiveC"><a href="#module-ObjectiveC" class="anchor"></a><code><span class="keyword">module</span> <a href="ObjectiveC/index.html">ObjectiveC</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html> |