<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferModules__PatternMatch (infer.InferModules__PatternMatch)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><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> &#x00BB; InferModules__PatternMatch</nav><h1>Module <code>InferModules__PatternMatch</code></h1><p>Module for Pattern matching.</p></header><dl><dt class="spec value" id="val-get_this_type"><a href="#val-get_this_type" class="anchor"></a><code><span class="keyword">val</span> get_this_type : <a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> option</span></code></dt><dd><p>Get the this type of a procedure</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="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Pvar/index.html#type-t">InferIR.Pvar.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span>&#45;&gt;</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_getter"><a href="#val-is_getter" class="anchor"></a><code><span class="keyword">val</span> is_getter : <a href="../../InferIR/InferIR/Typ/Procname/Java/index.html#type-t">InferIR.Typ.Procname.Java.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Is this a getter proc name?</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Resolve <code>typ_str</code> in <code>tenv</code>, then check <code>typ</code> &lt;: <code>typ_str</code></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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Check whether class implements a Java IO</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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_set"><a href="#val-implements_set" class="anchor"></a><code><span class="keyword">val</span> implements_set : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</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>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Check whether class implements a class of Android</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Struct/index.html#type-t">InferIR.Typ.Struct.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> option</span>)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</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-java_get_vararg_values"><a href="#val-java_get_vararg_values" class="anchor"></a><code><span class="keyword">val</span> java_get_vararg_values : <a href="../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Pvar/index.html#type-t">InferIR.Pvar.t</a> <span>&#45;&gt;</span> <a href="../InferModules/Idenv/index.html#type-t">InferModules.Idenv.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> list</span></code></dt><dd><p>Get the values of a vararg parameter given the pvar used to assign the elements.</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="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> option</span>)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <span>(<a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span><span>(<a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> * <a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.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_find"><a href="#val-override_find" class="anchor"></a><code><span class="keyword">val</span> override_find : <span>?&#8288;check_current_type:bool</span> <span>&#45;&gt;</span> <span>(<a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> option</span></code></dt><dd><p>Return a method which overrides <code>procname</code> and satisfies <code>f</code> (including <code>procname</code> itself when <code>check_current_type</code> is true, which it is by default).</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>?&#8288;check_current_type:bool</span> <span>&#45;&gt;</span> <span>(<a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.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="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.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="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Is the type a class type</p></dd></dl><dl><dt class="spec value" id="val-type_is_object"><a href="#val-type_is_object" class="anchor"></a><code><span class="keyword">val</span> type_is_object : <a href="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Is the type java.lang.Object</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="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR__Typ/Fieldname/index.html#module-Set">InferIR.Typ.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="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</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_runtime_exception"><a href="#val-is_runtime_exception" class="anchor"></a><code><span class="keyword">val</span> is_runtime_exception : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>is_runtime_exception tenv class_name</code> checks if classname is of type java.lang.RuntimeException</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="../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>tests whether any class attributes (e.g., @ThreadSafe) 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="../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>tests whether any class attributes (e.g., @ThreadSafe) 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="../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> <span>&#45;&gt;</span> <span><a href="../../InferIR/InferIR/Typ/Name/index.html#type-t">InferIR.Typ.Name.t</a> list</span></code></dt><dd><p>find superclasss with attributes (e.g., @ThreadSafe), including current class</p></dd></dl></div></body></html>