This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden 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>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Errdesc (infer.Biabduction.Errdesc)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Biabduction</a>» Errdesc</nav><h1>Module <code>Biabduction.Errdesc</code></h1></header><aside><p>Create descriptions of analysis errors</p></aside><dl><dtclass="spec value"id="val-vpath_find"><ahref="#val-vpath_find"class="anchor"></a><code><spanclass="keyword">val</span> vpath_find : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/DecompiledExp/index.html#type-vpath">IR.DecompiledExp.vpath</a> * <span><ahref="../../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><dtclass="spec value"id="val-hpred_is_open_resource"><ahref="#val-hpred_is_open_resource"class="anchor"></a><code><spanclass="keyword">val</span> hpred_is_open_resource : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><ahref="../Predicates/index.html#type-hpred">Predicates.hpred</a><span>-></span><span><ahref="../../IR/PredSymb/index.html#type-resource">IR.PredSymb.resource</a> option</span></code></dt><dd><p>Check whether the hpred is a |-> representing a resource in the Racquire state</p></dd></dl><dl><dtclass="spec value"id="val-find_ident_assignment"><ahref="#val-find_ident_assignment"class="anchor"></a><code><spanclass="keyword">val</span> find_ident_assignment : <ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IR/Ident/index.html#type-t">IR.Ident.t</a><span>-></span><span><span>(<ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a> * <ahref="../../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><dtclass="spec value"id="val-exp_rv_dexp"><ahref="#val-exp_rv_dexp"class="anchor"></a><code><spanclass="keyword">val</span> exp_rv_dexp : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><span><ahref="../../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><dtclass="spec value"id="val-explain_array_access"><ahref="#val-explain_array_access"class="anchor"></a><code><spanclass="keyword">val</span> explain_array_access : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_class_cast_exception"><ahref="#val-explain_class_cast_exception"class="anchor"></a><code><spanclass="keyword">val</span> explain_class_cast_exception : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a> option</span><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_dereference"><ahref="#val-explain_dereference"class="anchor"></a><code><spanclass="keyword">val</span> explain_dereference : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span>?⁠use_buckets:bool</span><span>-></span><span>?⁠is_nullable:bool</span><span>-></span><span>?⁠is_premature_nil:bool</span><span>-></span><ahref="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_dereference_as_caller_expression"><ahref="#val-explain_dereference_as_caller_expression"class="anchor"></a><code><spanclass="keyword">val</span> explain_dereference_as_caller_expression : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span>?⁠use_buckets:bool</span><span>-></span><ahref="../../Absint/Localise/index.html#type-deref_str">Absint.Localise.deref_str</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><span><spanclass="type-var">'b</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span><ahref="../../IR/Pvar/index.html#type-t">IR.Pvar.t</a> list</span><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_divide_by_zero"><ahref="#val-explain_divide_by_zero"class="anchor"></a><code><spanclass="keyword">val</span> explain_divide_by_zero : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_condition_always_true_false"><ahref="#val-explain_condition_always_true_false"class="anchor"></a><code><spanclass="keyword">val</span> explain_condition_always_true_false : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/IntLit/index.html#type-t">IR.IntLit.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../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><dtclass="spec value"id="val-explain_unary_minus_applied_to_unsigned_expression"><ahref="#val-explain_unary_minus_applied_to_unsigned_expression"class="anchor"></a><code><spanclass="keyword">val</span> explain_unary_minus_applied_to_unsigned_expression : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../Absint/Localise/index.html#type-error_desc">Absint.Localise.error_desc</a></code></dt><dd><p>explain unary minus applied to unsigned expression</p></dd></dl><dl><dtclass="spec value"id="val-explain_leak"><ahref="#val-explain_leak"class="anchor"></a><code><spanclass="keyword">val</span> explain_leak : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../Predicates/index.html#type-hpred">Predicates.hpred</a><span>-></span><span><spanclass="type-var">'a</span><ahref="../Prop/index.html#type-t">Prop.t</a></span><span>-></span><span><ahref="../../IR/PredSymb/index.html#type-t">IR.PredSymb.t</a> option</span><span>-></span><span>string option</span><span>-></span> bool * <ahref="../../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><dtclass="spec value"id="val-warning_err"><ahref="#val-warning_err"class="anchor"></a><code><spanclass="keyword">val</span> warning_err : <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span><span>(<spanclass="type-var">'a</span>,Stdlib.Format.formatter,unit)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.format</span><span>-></span><spanclass="type-var">'a</span></code></dt><dd><p>warn at the given location</p></dd></dl><dl><dtclass="spec value"id="val-find_outermost_dereference"><ahref="#val-find_outermost_dereference"class="anchor"></a><code><spanclass="keyword">val</span> find_outermost_dereference : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><span><ahref="../../IR/DecompiledExp/index.html#type-t">IR.DecompiledExp.t</a> option</span></code></dt><dtclass="spec value"id="val-access_opt"><ahref="#val-access_opt"class="anchor"></a><code><spanclass="keyword">val</span> access_opt : <span>?⁠is_nullable:bool</span><span>-></span><ahref="../Predicates/index.html#type-inst">Predicates.inst</a><span>-></span><span><ahref="../../Absint/Localise/index.html#type-access">Absint.Localise.access</a> option</span></code></dt></dl></div></body></html>