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
24 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>EradicateChecks (infer.InferModules.EradicateChecks)</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; EradicateChecks</nav><h1>Module <code>InferModules.EradicateChecks</code></h1></header><aside><p>Module for the checks called by Eradicate.</p></aside><dl><dt class="spec value" id="val-get_field_annotation"><a href="#val-get_field_annotation" class="anchor"></a><code><span class="keyword">val</span> get_field_annotation : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR__Typ/Fieldname/index.html#type-t">InferIR__Typ.Fieldname.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR__Typ/index.html#type-typ">InferIR__Typ.typ</a> <span>&#45;&gt;</span> <span><span>(<a href="../../../InferIR/InferIR__Typ/index.html#type-typ">InferIR__Typ.typ</a> * <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a>)</span> option</span></code></dt><dt class="spec value" id="val-report_error"><a href="#val-report_error" class="anchor"></a><code><span class="keyword">val</span> report_error : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../TypeErr/index.html#type-err_instance">TypeErr.err_instance</a> <span>&#45;&gt;</span> <span><a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> option</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-explain_expr"><a href="#val-explain_expr" class="anchor"></a><code><span class="keyword">val</span> explain_expr : <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/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <span>string option</span></code></dt><dt class="spec value" id="val-is_virtual"><a href="#val-is_virtual" class="anchor"></a><code><span class="keyword">val</span> is_virtual : <span><span>(<a href="../../../InferIR/InferIR/Mangled/index.html#type-t">InferIR.Mangled.t</a> * <span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> list</span> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-check_field_access"><a href="#val-check_field_access" class="anchor"></a><code><span class="keyword">val</span> check_field_access : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.t</a> <span>&#45;&gt;</span> <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check an access (read or write) to a field.</p></dd></dl><dl><dt class="spec value" id="val-check_array_access"><a href="#val-check_array_access" class="anchor"></a><code><span class="keyword">val</span> check_array_access : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.t</a> <span>&#45;&gt;</span> <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> unit</code></dt><dd><p>Check an access to an array</p></dd></dl><dl><dt class="spec type" id="type-from_call"><a href="#type-from_call" class="anchor"></a><code><span class="keyword">type</span> from_call</code><code> = </code><table class="variant"><tr id="type-from_call.From_condition" class="anchored"><td class="def constructor"><a href="#type-from_call.From_condition" class="anchor"></a><code>| </code><code><span class="constructor">From_condition</span></code></td><td class="doc"><p>Direct condition</p></td></tr><tr id="type-from_call.From_instanceof" class="anchored"><td class="def constructor"><a href="#type-from_call.From_instanceof" class="anchor"></a><code>| </code><code><span class="constructor">From_instanceof</span></code></td><td class="doc"><p>x instanceof C</p></td></tr><tr id="type-from_call.From_is_false_on_null" class="anchored"><td class="def constructor"><a href="#type-from_call.From_is_false_on_null" class="anchor"></a><code>| </code><code><span class="constructor">From_is_false_on_null</span></code></td><td class="doc"><p>returns false on null</p></td></tr><tr id="type-from_call.From_is_true_on_null" class="anchored"><td class="def constructor"><a href="#type-from_call.From_is_true_on_null" class="anchor"></a><code>| </code><code><span class="constructor">From_is_true_on_null</span></code></td><td class="doc"><p>returns true on null</p></td></tr><tr id="type-from_call.From_optional_isPresent" class="anchored"><td class="def constructor"><a href="#type-from_call.From_optional_isPresent" class="anchor"></a><code>| </code><code><span class="constructor">From_optional_isPresent</span></code></td><td class="doc"><p>x.isPresent</p></td></tr><tr id="type-from_call.From_containsKey" class="anchored"><td class="def constructor"><a href="#type-from_call.From_containsKey" class="anchor"></a><code>| </code><code><span class="constructor">From_containsKey</span></code></td><td class="doc"><p>x.containsKey</p></td></tr></table></dt><dd><p>Where the condition is coming from</p></dd></dl><dl><dt class="spec value" id="val-compare_from_call"><a href="#val-compare_from_call" class="anchor"></a><code><span class="keyword">val</span> compare_from_call : <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-equal_from_call"><a href="#val-equal_from_call" class="anchor"></a><code><span class="keyword">val</span> equal_from_call : <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-check_condition"><a href="#val-check_condition" class="anchor"></a><code><span class="keyword">val</span> check_condition : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> <a href="../Idenv/index.html#type-t">Idenv.t</a> <span>&#45;&gt;</span> <a href="../Printer/LineReader/index.html#type-t">Printer.LineReader.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check the normalized &quot;is zero&quot; or &quot;is not zero&quot; condition of a prune instruction.</p></dd></dl><dl><dt class="spec value" id="val-check_zero"><a href="#val-check_zero" class="anchor"></a><code><span class="keyword">val</span> check_zero : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> <a href="../Idenv/index.html#type-t">Idenv.t</a> <span>&#45;&gt;</span> <a href="../Printer/LineReader/index.html#type-t">Printer.LineReader.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check an &quot;is zero&quot; condition.</p></dd></dl><dl><dt class="spec value" id="val-check_nonzero"><a href="#val-check_nonzero" class="anchor"></a><code><span class="keyword">val</span> check_nonzero : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> <a href="index.html#type-from_call">from_call</a> <span>&#45;&gt;</span> <a href="../Idenv/index.html#type-t">Idenv.t</a> <span>&#45;&gt;</span> <a href="../Printer/LineReader/index.html#type-t">Printer.LineReader.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check an &quot;is not zero&quot; condition.</p></dd></dl><dl><dt class="spec value" id="val-check_field_assignment"><a href="#val-check_field_assignment" class="anchor"></a><code><span class="keyword">val</span> check_field_assignment : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span> <span>&#45;&gt;</span> <span class="type-var">'c</span> <span>&#45;&gt;</span> <span class="type-var">'d</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.t</a> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'e</span> * <a href="../../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a>)</span> option</span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span> <span>&#45;&gt;</span> <span>(<span class="type-var">'d</span> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <span><a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> list</span>)</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <span class="type-var">'f</span>)</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check an assignment to a field.</p></dd></dl><dl><dt class="spec value" id="val-check_constructor_initialization"><a href="#val-check_constructor_initialization" class="anchor"></a><code><span class="keyword">val</span> check_constructor_initialization : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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> <span><span><span>(<a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> * <a href="../TypeState/index.html#type-t">TypeState.t</a>)</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Lazy.t</span> <span>&#45;&gt;</span> <span><span><span>(<a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> * <a href="../TypeState/index.html#type-t">TypeState.t</a>)</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Lazy.t</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check that nonnullable fields are initialized in constructors.</p></dd></dl><dl><dt class="spec value" id="val-check_return_annotation"><a href="#val-check_return_annotation" class="anchor"></a><code><span class="keyword">val</span> check_return_annotation : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <span class="type-var">'b</span>)</span> option</span> <span>&#45;&gt;</span> <a href="../AnnotatedSignature/index.html#type-t">AnnotatedSignature.t</a> <span>&#45;&gt;</span> bool <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check the annotations when returning from a method.</p></dd></dl><dl><dt class="spec value" id="val-check_call_receiver"><a href="#val-check_call_receiver" class="anchor"></a><code><span class="keyword">val</span> check_call_receiver : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span>(<span>(<a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> * <span class="type-var">'b</span>)</span> * <span class="type-var">'c</span>)</span> list</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <span>(<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="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span>(<span class="type-var">'c</span> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <span><span class="type-var">'d</span> list</span>)</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <span class="type-var">'e</span> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <span class="type-var">'f</span>)</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check the receiver of a virtual call.</p></dd></dl><dl><dt class="spec type" id="type-resolved_param"><a href="#type-resolved_param" class="anchor"></a><code><span class="keyword">type</span> resolved_param</code><code> = </code><code>{</code><table class="record"><tr id="type-resolved_param.num" class="anchored"><td class="def field"><a href="#type-resolved_param.num" class="anchor"></a><code>num : int;</code></td></tr><tr id="type-resolved_param.formal" class="anchored"><td class="def field"><a href="#type-resolved_param.formal" class="anchor"></a><code>formal : <a href="../../../InferIR/InferIR/Mangled/index.html#type-t">InferIR.Mangled.t</a> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a> * <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a>;</code></td></tr><tr id="type-resolved_param.actual" class="anchored"><td class="def field"><a href="#type-resolved_param.actual" class="anchor"></a><code>actual : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> * <a href="../TypeAnnotation/index.html#type-t">TypeAnnotation.t</a>;</code></td></tr><tr id="type-resolved_param.propagates_nullable" class="anchored"><td class="def field"><a href="#type-resolved_param.propagates_nullable" class="anchor"></a><code>propagates_nullable : bool;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-check_call_parameters"><a href="#val-check_call_parameters" class="anchor"></a><code><span class="keyword">val</span> check_call_parameters : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.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/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span>&#45;&gt;</span> <span><a href="index.html#type-resolved_param">resolved_param</a> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</span> <span>&#45;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>&#45;&gt;</span> <a href="../TypeErr/InstrRef/index.html#type-t">TypeErr.InstrRef.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Check the parameters of a call.</p></dd></dl><dl><dt class="spec value" id="val-check_overridden_annotations"><a href="#val-check_overridden_annotations" class="anchor"></a><code><span class="keyword">val</span> check_overridden_annotations : <span>(<a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a>)</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> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> <a href="../AnnotatedSignature/index.html#type-t">AnnotatedSignature.t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Checks if the annotations are consistent with the inherited class or with the implemented interfaces</p></dd></dl></div></body></html>