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
9.4 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>Concurrency__RacerDModels (infer.Concurrency__RacerDModels)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><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; Concurrency__RacerDModels</nav><h1>Module <code>Concurrency__RacerDModels</code></h1></header><dl><dt class="spec value" id="val-is_container_read"><a href="#val-is_container_read" class="anchor"></a><code><span class="keyword">val</span> is_container_read : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_container_write"><a href="#val-is_container_write" class="anchor"></a><code><span class="keyword">val</span> is_container_write : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>return Some (access) if this procedure accesses the contents of a container (e.g., Map.get)</p></dd></dl><dl><dt class="spec value" id="val-has_return_annot"><a href="#val-has_return_annot" class="anchor"></a><code><span class="keyword">val</span> has_return_annot : <span>(<a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_functional"><a href="#val-is_functional" class="anchor"></a><code><span class="keyword">val</span> is_functional : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-acquires_ownership"><a href="#val-acquires_ownership" class="anchor"></a><code><span class="keyword">val</span> acquires_ownership : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_box"><a href="#val-is_box" class="anchor"></a><code><span class="keyword">val</span> is_box : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>return true if the given procname boxes a primitive type into a reference type</p></dd></dl><dl><dt class="spec value" id="val-is_thread_confined_method"><a href="#val-is_thread_confined_method" class="anchor"></a><code><span class="keyword">val</span> is_thread_confined_method : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>Methods in <code>@ThreadConfined</code> classes and methods annotated with <code>@ThreadConfined</code> are assumed to all run on the same thread. For the moment we won't warn on accesses resulting from use of such methods at all. In future we should account for races between these methods and methods from completely different classes that don't necessarily run on the same thread as the confined object.</p></dd></dl><dl><dt class="spec value" id="val-should_analyze_proc"><a href="#val-should_analyze_proc" class="anchor"></a><code><span class="keyword">val</span> should_analyze_proc : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>return true if we should compute a summary for the procedure. if this returns false, we won't analyze the procedure or report any warnings on it. note: in the future, we will want to analyze the procedures in all of these cases in order to find more bugs. this is just a temporary measure to avoid obvious false positives</p></dd></dl><dl><dt class="spec value" id="val-get_current_class_and_threadsafe_superclasses"><a href="#val-get_current_class_and_threadsafe_superclasses" class="anchor"></a><code><span class="keyword">val</span> get_current_class_and_threadsafe_superclasses : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><span>(<a href="../IR/Typ/index.html#type-name">IR.Typ.name</a> * <span><a href="../IR/Typ/index.html#type-name">IR.Typ.name</a> list</span>)</span> option</span></code></dt><dt class="spec value" id="val-is_thread_safe_method"><a href="#val-is_thread_safe_method" class="anchor"></a><code><span class="keyword">val</span> is_thread_safe_method : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>returns true if method or overriden method in superclass is <code>@ThreadSafe</code>, <code>@ThreadSafe(enableChecks = true)</code>, or is defined as an alias of <code>@ThreadSafe</code> in a .inferconfig file.</p></dd></dl><dl><dt class="spec value" id="val-is_marked_thread_safe"><a href="#val-is_marked_thread_safe" class="anchor"></a><code><span class="keyword">val</span> is_marked_thread_safe : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_safe_access"><a href="#val-is_safe_access" class="anchor"></a><code><span class="keyword">val</span> is_safe_access : <span><span class="type-var">'a</span> <a href="../Absint/HilExp/Access/index.html#type-t">Absint.HilExp.Access.t</a></span> <span>&#45;&gt;</span> <a href="../Absint/HilExp/AccessExpression/index.html#type-t">Absint.HilExp.AccessExpression.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>check if an access to a field is thread-confined, or whether the field is volatile</p></dd></dl><dl><dt class="spec value" id="val-should_flag_interface_call"><a href="#val-should_flag_interface_call" class="anchor"></a><code><span class="keyword">val</span> should_flag_interface_call : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><a href="../Absint/HilExp/index.html#type-t">Absint.HilExp.t</a> list</span> <span>&#45;&gt;</span> <a href="../IR/CallFlags/index.html#type-t">IR.CallFlags.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>should an interface call be flagged as potentially non-thread safe?</p></dd></dl><dl><dt class="spec value" id="val-is_synchronized_container"><a href="#val-is_synchronized_container" class="anchor"></a><code><span class="keyword">val</span> is_synchronized_container : <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <a href="../Absint/HilExp/AccessExpression/index.html#type-t">Absint.HilExp.AccessExpression.t</a> <span>&#45;&gt;</span> <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>is a call on an access expression to a method of a synchronized container?</p></dd></dl><dl><dt class="spec value" id="val-is_initializer"><a href="#val-is_initializer" class="anchor"></a><code><span class="keyword">val</span> is_initializer : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>should the given procedure be treated as a constructor/initializer?</p></dd></dl><dl><dt class="spec value" id="val-is_synchronized_container_constructor"><a href="#val-is_synchronized_container_constructor" class="anchor"></a><code><span class="keyword">val</span> is_synchronized_container_constructor : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><a href="../Absint/HilExp/index.html#type-t">Absint.HilExp.t</a> list</span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_converter_to_synchronized_container"><a href="#val-is_converter_to_synchronized_container" class="anchor"></a><code><span class="keyword">val</span> is_converter_to_synchronized_container : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span><a href="../Absint/HilExp/index.html#type-t">Absint.HilExp.t</a> list</span> <span>&#45;&gt;</span> bool</code></dt><dd><p>is the given <code>procname</code> a method that wraps a container into a thread-safe wrapper?</p></dd></dl><dl><dt class="spec value" id="val-get_litho_explanation"><a href="#val-get_litho_explanation" class="anchor"></a><code><span class="keyword">val</span> get_litho_explanation : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> <span>&#45;&gt;</span> <span>string option</span></code></dt><dd><p>Get report explanation specific to Litho class methods, if applicable</p></dd></dl></div></body></html>