<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Biabduction__Errdesc (infer.Biabduction__Errdesc)</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; Biabduction__Errdesc</nav><h1>Module <code>Biabduction__Errdesc</code></h1></header><aside><p>Create descriptions of analysis errors</p></aside><dl><dt class="spec value" id="val-vpath_find"><a href="#val-vpath_find" class="anchor"></a><code><span class="keyword">val</span> vpath_find : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/DecompiledExp/index.html#type-vpath">IR.DecompiledExp.vpath</a> * <span><a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span></code></dt><dd><p>find the dexp, if any, where the given value is stored also return the type of the value if found</p></dd></dl><dl><dt class="spec value" id="val-hpred_is_open_resource"><a href="#val-hpred_is_open_resource" class="anchor"></a><code><span class="keyword">val</span> hpred_is_open_resource : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../Biabduction/Predicates/index.html#type-hpred">Biabduction.Predicates.hpred</a> <span>&#45;&gt;</span> <span><a href="../IR/PredSymb/index.html#type-resource">IR.PredSymb.resource</a> option</span></code></dt><dd><p>Check whether the hpred is a |-&gt; representing a resource in the Racquire state</p></dd></dl><dl><dt class="spec value" id="val-find_ident_assignment"><a href="#val-find_ident_assignment" class="anchor"></a><code><span class="keyword">val</span> find_ident_assignment : <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IR/Ident/index.html#type-t">IR.Ident.t</a> <span>&#45;&gt;</span> <span><span>(<a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> * <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a>)</span> option</span></code></dt><dd><p>Find a program variable assignment to id in the current node or predecessors.</p></dd></dl><dl><dt class="spec value" id="val-exp_rv_dexp"><a href="#val-exp_rv_dexp" class="anchor"></a><code><span class="keyword">val</span> exp_rv_dexp : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../IR/DecompiledExp/index.html#type-t">IR.DecompiledExp.t</a> option</span></code></dt><dd><p>describe rvalue <code>e</code> as a dexp</p></dd></dl><dl><dt class="spec value" id="val-explain_array_access"><a href="#val-explain_array_access" class="anchor"></a><code><span class="keyword">val</span> explain_array_access : <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> <a href="../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>Produce a description of the array access performed in the current instruction, if any.</p></dd></dl><dl><dt class="spec value" id="val-explain_class_cast_exception"><a href="#val-explain_class_cast_exception" class="anchor"></a><code><span class="keyword">val</span> explain_class_cast_exception : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span><a href="../IR/Procname/index.html#type-t">IR.Procname.t</a> option</span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a class cast exception</p></dd></dl><dl><dt class="spec value" id="val-explain_dereference"><a href="#val-explain_dereference" class="anchor"></a><code><span class="keyword">val</span> explain_dereference : <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> <span>?&#8288;use_buckets:bool</span> <span>&#45;&gt;</span> <span>?&#8288;is_nullable:bool</span> <span>&#45;&gt;</span> <span>?&#8288;is_premature_nil:bool</span> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>Produce a description of which expression is dereferenced in the current instruction, if any.</p></dd></dl><dl><dt class="spec value" id="val-explain_dereference_as_caller_expression"><a href="#val-explain_dereference_as_caller_expression" class="anchor"></a><code><span class="keyword">val</span> explain_dereference_as_caller_expression : <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> <span>?&#8288;use_buckets:bool</span> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span><a href="../IR/Pvar/index.html#type-t">IR.Pvar.t</a> list</span> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>return a description explaining value <code>exp</code> in <code>prop</code> in terms of a source expression using the formal parameters of the call</p></dd></dl><dl><dt class="spec value" id="val-explain_divide_by_zero"><a href="#val-explain_divide_by_zero" class="anchor"></a><code><span class="keyword">val</span> explain_divide_by_zero : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a division by zero</p></dd></dl><dl><dt class="spec value" id="val-explain_condition_always_true_false"><a href="#val-explain_condition_always_true_false" class="anchor"></a><code><span class="keyword">val</span> explain_condition_always_true_false : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/IntLit/index.html#type-t">IR.IntLit.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain a condition which is always true or false</p></dd></dl><dl><dt class="spec value" id="val-explain_leak"><a href="#val-explain_leak" class="anchor"></a><code><span class="keyword">val</span> explain_leak : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../Biabduction/Predicates/index.html#type-hpred">Biabduction.Predicates.hpred</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <span><a href="../IR/PredSymb/index.html#type-t">IR.PredSymb.t</a> option</span> <span>&#45;&gt;</span> <span>string option</span> <span>&#45;&gt;</span> bool * <a href="../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.</p></dd></dl><dl><dt class="spec value" id="val-warning_err"><a href="#val-warning_err" class="anchor"></a><code><span class="keyword">val</span> warning_err : <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span>, Stdlib.Format.formatter, unit)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.format</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>warn at the given location</p></dd></dl><dl><dt class="spec value" id="val-find_outermost_dereference"><a href="#val-find_outermost_dereference" class="anchor"></a><code><span class="keyword">val</span> find_outermost_dereference : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../IR/DecompiledExp/index.html#type-t">IR.DecompiledExp.t</a> option</span></code></dt><dt class="spec value" id="val-access_opt"><a href="#val-access_opt" class="anchor"></a><code><span class="keyword">val</span> access_opt : <span>?&#8288;is_nullable:bool</span> <span>&#45;&gt;</span> <a href="../Biabduction/Predicates/index.html#type-inst">Biabduction.Predicates.inst</a> <span>&#45;&gt;</span> <span><a href="../Absint/Localise/index.html#type-access">Absint.Localise.access</a> option</span></code></dt></dl></div></body></html>