You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
18 KiB

This file contains ambiguous Unicode characters!

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>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Annotations (infer.InferModules.Annotations)</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; <a href="../index.html">InferModules</a> &#x00BB; Annotations</nav><h1>Module <code>InferModules.Annotations</code></h1></header><aside><p>Annotations.</p></aside><dl><dt class="spec value" id="val-any_thread"><a href="#val-any_thread" class="anchor"></a><code><span class="keyword">val</span> any_thread : string</code></dt><dt class="spec value" id="val-auto_cleanup"><a href="#val-auto_cleanup" class="anchor"></a><code><span class="keyword">val</span> auto_cleanup : string</code></dt><dt class="spec value" id="val-expensive"><a href="#val-expensive" class="anchor"></a><code><span class="keyword">val</span> expensive : string</code></dt><dt class="spec value" id="val-inject_prop"><a href="#val-inject_prop" class="anchor"></a><code><span class="keyword">val</span> inject_prop : string</code></dt><dt class="spec value" id="val-no_allocation"><a href="#val-no_allocation" class="anchor"></a><code><span class="keyword">val</span> no_allocation : string</code></dt><dt class="spec value" id="val-nullable"><a href="#val-nullable" class="anchor"></a><code><span class="keyword">val</span> nullable : string</code></dt><dt class="spec value" id="val-nonnull"><a href="#val-nonnull" class="anchor"></a><code><span class="keyword">val</span> nonnull : string</code></dt><dt class="spec value" id="val-performance_critical"><a href="#val-performance_critical" class="anchor"></a><code><span class="keyword">val</span> performance_critical : string</code></dt><dt class="spec value" id="val-present"><a href="#val-present" class="anchor"></a><code><span class="keyword">val</span> present : string</code></dt><dt class="spec value" id="val-prop"><a href="#val-prop" class="anchor"></a><code><span class="keyword">val</span> prop : string</code></dt><dt class="spec value" id="val-for_non_ui_thread"><a href="#val-for_non_ui_thread" class="anchor"></a><code><span class="keyword">val</span> for_non_ui_thread : string</code></dt><dt class="spec value" id="val-for_ui_thread"><a href="#val-for_ui_thread" class="anchor"></a><code><span class="keyword">val</span> for_ui_thread : string</code></dt><dt class="spec value" id="val-guarded_by"><a href="#val-guarded_by" class="anchor"></a><code><span class="keyword">val</span> guarded_by : string</code></dt><dt class="spec value" id="val-suppress_lint"><a href="#val-suppress_lint" class="anchor"></a><code><span class="keyword">val</span> suppress_lint : string</code></dt><dt class="spec value" id="val-thread_confined"><a href="#val-thread_confined" class="anchor"></a><code><span class="keyword">val</span> thread_confined : string</code></dt><dt class="spec value" id="val-thread_safe"><a href="#val-thread_safe" class="anchor"></a><code><span class="keyword">val</span> thread_safe : string</code></dt><dt class="spec value" id="val-mainthread"><a href="#val-mainthread" class="anchor"></a><code><span class="keyword">val</span> mainthread : string</code></dt><dt class="spec value" id="val-ui_thread"><a href="#val-ui_thread" class="anchor"></a><code><span class="keyword">val</span> ui_thread : string</code></dt><dt class="spec value" id="val-worker_thread"><a href="#val-worker_thread" class="anchor"></a><code><span class="keyword">val</span> worker_thread : string</code></dt><dt class="spec value" id="val-visibleForTesting"><a href="#val-visibleForTesting" class="anchor"></a><code><span class="keyword">val</span> visibleForTesting : string</code></dt><dt class="spec value" id="val-generated_graphql"><a href="#val-generated_graphql" class="anchor"></a><code><span class="keyword">val</span> generated_graphql : string</code></dt><dt class="spec value" id="val-get_annot_ending"><a href="#val-get_annot_ending" class="anchor"></a><code><span class="keyword">val</span> get_annot_ending : <a href="../../../InferIR/InferIR/Annot/index.html#type-t">InferIR.Annot.t</a> <span>&#45;&gt;</span> string</code></dt><dd><p>get the '.'-last component of an annotation</p></dd></dl><dl><dt class="spec value" id="val-annot_ends_with"><a href="#val-annot_ends_with" class="anchor"></a><code><span class="keyword">val</span> annot_ends_with : <a href="../../../InferIR/InferIR/Annot/index.html#type-t">InferIR.Annot.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p><code>annot_ends_with annot ann_name</code> returns true if the class name of <code>annot</code>, without the package, is equal to <code>ann_name</code></p></dd></dl><dl><dt class="spec value" id="val-ia_ends_with"><a href="#val-ia_ends_with" class="anchor"></a><code><span class="keyword">val</span> ia_ends_with : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Check if there is an annotation in <code>ia</code> which ends with the given name</p></dd></dl><dl><dt class="spec value" id="val-ia_has_annotation_with"><a href="#val-ia_has_annotation_with" class="anchor"></a><code><span class="keyword">val</span> ia_has_annotation_with : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Annot/index.html#type-t">InferIR.Annot.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_false_on_null"><a href="#val-ia_is_false_on_null" class="anchor"></a><code><span class="keyword">val</span> ia_is_false_on_null : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_initializer"><a href="#val-ia_is_initializer" class="anchor"></a><code><span class="keyword">val</span> ia_is_initializer : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_cleanup"><a href="#val-ia_is_cleanup" class="anchor"></a><code><span class="keyword">val</span> ia_is_cleanup : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_field_injector_readonly"><a href="#val-ia_is_field_injector_readonly" class="anchor"></a><code><span class="keyword">val</span> ia_is_field_injector_readonly : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.</p></dd></dl><dl><dt class="spec value" id="val-ia_is_field_injector_readwrite"><a href="#val-ia_is_field_injector_readwrite" class="anchor"></a><code><span class="keyword">val</span> ia_is_field_injector_readwrite : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Annotations for read-write injectors. The injector framework initializes the field and can write null into it.</p></dd></dl><dl><dt class="spec value" id="val-ia_is_mutable"><a href="#val-ia_is_mutable" class="anchor"></a><code><span class="keyword">val</span> ia_is_mutable : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_nonnull"><a href="#val-ia_is_nonnull" class="anchor"></a><code><span class="keyword">val</span> ia_is_nonnull : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_nullable"><a href="#val-ia_is_nullable" class="anchor"></a><code><span class="keyword">val</span> ia_is_nullable : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_present"><a href="#val-ia_is_present" class="anchor"></a><code><span class="keyword">val</span> ia_is_present : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_true_on_null"><a href="#val-ia_is_true_on_null" class="anchor"></a><code><span class="keyword">val</span> ia_is_true_on_null : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_verify"><a href="#val-ia_is_verify" class="anchor"></a><code><span class="keyword">val</span> ia_is_verify : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_expensive"><a href="#val-ia_is_expensive" class="anchor"></a><code><span class="keyword">val</span> ia_is_expensive : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_functional"><a href="#val-ia_is_functional" class="anchor"></a><code><span class="keyword">val</span> ia_is_functional : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_propagates_nullable"><a href="#val-ia_is_propagates_nullable" class="anchor"></a><code><span class="keyword">val</span> ia_is_propagates_nullable : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_ignore_allocations"><a href="#val-ia_is_ignore_allocations" class="anchor"></a><code><span class="keyword">val</span> ia_is_ignore_allocations : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_inject"><a href="#val-ia_is_inject" class="anchor"></a><code><span class="keyword">val</span> ia_is_inject : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_suppress_lint"><a href="#val-ia_is_suppress_lint" class="anchor"></a><code><span class="keyword">val</span> ia_is_suppress_lint : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_not_thread_safe"><a href="#val-ia_is_not_thread_safe" class="anchor"></a><code><span class="keyword">val</span> ia_is_not_thread_safe : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_nonblocking"><a href="#val-ia_is_nonblocking" class="anchor"></a><code><span class="keyword">val</span> ia_is_nonblocking : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_returns_ownership"><a href="#val-ia_is_returns_ownership" class="anchor"></a><code><span class="keyword">val</span> ia_is_returns_ownership : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_synchronized_collection"><a href="#val-ia_is_synchronized_collection" class="anchor"></a><code><span class="keyword">val</span> ia_is_synchronized_collection : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_thread_safe"><a href="#val-ia_is_thread_safe" class="anchor"></a><code><span class="keyword">val</span> ia_is_thread_safe : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_thread_confined"><a href="#val-ia_is_thread_confined" class="anchor"></a><code><span class="keyword">val</span> ia_is_thread_confined : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_thrift_service"><a href="#val-ia_is_thrift_service" class="anchor"></a><code><span class="keyword">val</span> ia_is_thrift_service : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_volatile"><a href="#val-ia_is_volatile" class="anchor"></a><code><span class="keyword">val</span> ia_is_volatile : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-ia_is_worker_thread"><a href="#val-ia_is_worker_thread" class="anchor"></a><code><span class="keyword">val</span> ia_is_worker_thread : <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-pdesc_get_return_annot"><a href="#val-pdesc_get_return_annot" class="anchor"></a><code><span class="keyword">val</span> pdesc_get_return_annot : <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a></code></dt><dd><p>get the list of annotations on the return value of <code>pdesc</code></p></dd></dl><dl><dt class="spec value" id="val-pdesc_has_return_annot"><a href="#val-pdesc_has_return_annot" class="anchor"></a><code><span class="keyword">val</span> pdesc_has_return_annot : <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <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> bool</code></dt><dd><p>return true if the given predicate evaluates to true on the annotation of <code>pdesc</code>'s return value</p></dd></dl><dl><dt class="spec value" id="val-pname_has_return_annot"><a href="#val-pname_has_return_annot" class="anchor"></a><code><span class="keyword">val</span> pname_has_return_annot : <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <span>attrs_of_pname:<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> <span>&#45;&gt;</span> <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> bool</code></dt><dd><p>return true if the given predicate evaluates to true on the annotation of <code>pname</code>'s return value. the function <code>attrs_of_pname</code> should resolve the proc attributes of <code>pname</code>. Specs.proc_resolve_attributes is a good choice for this resolution function.</p></dd></dl><dl><dt class="spec value" id="val-pdesc_return_annot_ends_with"><a href="#val-pdesc_return_annot_ends_with" class="anchor"></a><code><span class="keyword">val</span> pdesc_return_annot_ends_with : <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>return true if <code>pdesc</code>'s return value is annotated with a value ending with the given string</p></dd></dl><dl><dt class="spec value" id="val-ma_has_annotation_with"><a href="#val-ma_has_annotation_with" class="anchor"></a><code><span class="keyword">val</span> ma_has_annotation_with : <a href="../../../InferIR/InferIR/Annot/Method/index.html#type-t">InferIR.Annot.Method.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Annot/index.html#type-t">InferIR.Annot.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-field_has_annot"><a href="#val-field_has_annot" class="anchor"></a><code><span class="keyword">val</span> field_has_annot : <a href="../../../InferIR/InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.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> <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> bool</code></dt><dt class="spec value" id="val-struct_typ_has_annot"><a href="#val-struct_typ_has_annot" class="anchor"></a><code><span class="keyword">val</span> struct_typ_has_annot : <a href="../../../InferIR/InferIR/Typ/Struct/index.html#type-t">InferIR.Typ.Struct.t</a> <span>&#45;&gt;</span> <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> bool</code></dt><dd><p>return true if the given predicate evaluates to true on some annotation of <code>struct_typ</code></p></dd></dl></div></body></html>