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>Nullsafe__EradicateChecks (infer.Nullsafe__EradicateChecks)</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>» Nullsafe__EradicateChecks</nav><h1>Module <code>Nullsafe__EradicateChecks</code></h1></header><aside><p>Module for the checks called by Eradicate.</p></aside><divclass="spec module"id="module-L"><ahref="#module-L"class="anchor"></a><code><spanclass="keyword">module</span> L = <ahref="../IBase/index.html#module-Logging">IBase.Logging</a></code></div><dl><dtclass="spec value"id="val-explain_expr"><ahref="#val-explain_expr"class="anchor"></a><code><spanclass="keyword">val</span> explain_expr : <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>string option</span></code></dt><dtclass="spec value"id="val-is_virtual"><ahref="#val-is_virtual"class="anchor"></a><code><spanclass="keyword">val</span> is_virtual : <span><ahref="../Nullsafe/AnnotatedSignature/index.html#type-param_signature">Nullsafe.AnnotatedSignature.param_signature</a> list</span><span>-></span> bool</code></dt><dtclass="spec value"id="val-check_object_dereference"><ahref="#val-check_object_dereference"class="anchor"></a><code><spanclass="keyword">val</span> check_object_dereference : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span><ahref="../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="../Nullsafe/DereferenceRule/ReportableViolation/index.html#type-dereference_type">Nullsafe.DereferenceRule.ReportableViolation.dereference_type</a><span>-></span><ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_condition_for_redundancy"><ahref="#val-check_condition_for_redundancy"class="anchor"></a><code><spanclass="keyword">val</span> check_condition_for_redundancy : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>is_always_true:bool</span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><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="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a><span>-></span><ahref="../Nullsafe/IDEnv/index.html#type-t">Nullsafe.IDEnv.t</a><span>-></span><ahref="../IBase/LineReader/index.html#type-t">IBase.LineReader.t</a><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span> unit</code></dt><dd><p><code>expr</code> is an expression that was explicitly compared with `null`. At the same time, <code>expr</code> had <code>inferred_nullability</code> before the comparision. Check if the comparision is redundant and emit an issue, if this is the case.</p></dd></dl><dl><dtclass="spec value"id="val-check_field_assignment"><ahref="#val-check_field_assignment"class="anchor"></a><code><spanclass="keyword">val</span> check_field_assignment : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><spanclass="type-var">'a</span><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span><spanclass="type-var">'b</span><span>-></span><span>expr_rhs:<spanclass="type-var">'c</span></span><span>-></span><span>field_type:<ahref="../IR/Typ/index.html#type-t">IR.Typ.t</a></span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><ahref="../Nullsafe/AnnotatedField/index.html#type-t">Nullsafe.AnnotatedField.t</a><span>-></span><span>(<spanclass="type-var">'a</span><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span><spanclass="type-var">'b</span><span>-></span><spanclass="type-var">'c</span><span>-></span><span>(<ahref="../IR/Typ/index.html#type-t">IR.Typ.t</a> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><spanclass="type-var">'d</span> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>)</span><span>-></span> unit</code></dt><dd><p>Check an assignment to a field.</p></dd></dl><dl><dtclass="spec value"id="val-is_field_declared_as_nonnull"><ahref="#val-is_field_declared_as_nonnull"class="anchor"></a><code><spanclass="keyword">val</span> is_field_declared_as_nonnull : <span><ahref="../Nullsafe/AnnotatedField/index.html#type-t">Nullsafe.AnnotatedField.t</a> option</span><span>-></span> bool</code></dt><dtclass="spec value"id="val-lookup_field_in_typestate"><ahref="#val-lookup_field_in_typestate"class="anchor"></a><code><spanclass="keyword">val</span> lookup_field_in_typestate : <ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a><span>-></span><span><ahref="../Nullsafe/TypeState/index.html#type-range">Nullsafe.TypeState.range</a> option</span></code></dt><dtclass="spec value"id="val-convert_predicate"><ahref="#val-convert_predicate"class="anchor"></a><code><spanclass="keyword">val</span> convert_predicate : <span>(<ahref="../Nullsafe/TypeState/index.html#type-range">Nullsafe.TypeState.range</a><span>-></span> bool)</span><span>-></span><ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><span>(<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a>)</span><span>-></span> bool</code></dt><dtclass="spec value"id="val-predicate_holds_for_some_typestate"><ahref="#val-predicate_holds_for_some_typestate"class="anchor"></a><code><spanclass="keyword">val</span> predicate_holds_for_some_typestate : <span><span>(<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a>)</span> list</span><span>-></span><ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><span>predicate:<span>(<ahref="../Nullsafe/TypeState/index.html#type-range">Nullsafe.TypeState.range</a><span>-></span> bool)</span></span><span>-></span> bool</code></dt><dtclass="spec value"id="val-get_nullability_upper_bound_for_typestate"><ahref="#val-get_nullability_upper_bound_for_typestate"class="anchor"></a><code><spanclass="keyword">val</span> get_nullability_upper_bound_for_typestate : <ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a><span>-></span><ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></code></dt><dtclass="spec value"id="val-get_nullability_upper_bound"><ahref="#val-get_nullability_upper_bound"class="anchor"></a><code><spanclass="keyword">val</span> get_nullability_upper_bound : <ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span><span><span>(<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a>)</span> list</span><span>-></span><ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></code></dt><dtclass="spec value"id="val-is_generated_field"><ahref="#val-is_generated_field"class="anchor"></a><code><spanclass="keyword">val</span> is_generated_field : <ahref="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-check_constructor_initialization"><ahref="#val-check_constructor_initialization"class="anchor"></a><code><spanclass="keyword">val</span> check_constructor_initialization : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>typestates_for_curr_constructor_and_all_initializer_methods:<span><span><span>(<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a>)</span> list</span><ahref="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Lazy.t</span></span><span>-></span><span>typestates_for_all_constructors_incl_current:<span><span><span>(<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a> * <ahref="../Nullsafe/TypeState/index.html#type-t">Nullsafe.TypeState.t</a>)</span> list</span><ahref="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Lazy.t</span></span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span> unit</code></dt><dd><p>Check field initialization for a given constructor</p></dd></dl><dl><dtclass="spec value"id="val-check_return_not_nullable"><ahref="#val-check_return_not_nullable"class="anchor"></a><code><spanclass="keyword">val</span> check_return_not_nullable : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../Nullsafe/AnnotatedSignature/index.html#type-ret_signature">Nullsafe.AnnotatedSignature.ret_signature</a><span>-></span><ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_return_overrannotated"><ahref="#val-check_return_overrannotated"class="anchor"></a><code><spanclass="keyword">val</span> check_return_overrannotated : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><ahref="../Nullsafe/AnnotatedSignature/index.html#type-ret_signature">Nullsafe.AnnotatedSignature.ret_signature</a><span>-></span><ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_return_annotation"><ahref="#val-check_return_annotation"class="anchor"></a><code><spanclass="keyword">val</span> check_return_annotation : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><span><span>(<spanclass="type-var">'a</span> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>)</span> option</span><span>-></span><ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a><span>-></span> bool <span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span> unit</code></dt><dd><p>Check the annotations when returning from a method.</p></dd></dl><dl><dtclass="spec value"id="val-check_call_receiver"><ahref="#val-check_call_receiver"class="anchor"></a><code><spanclass="keyword">val</span> check_call_receiver : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><spanclass="type-var">'a</span><span>-></span><span><span>(<span>(<ahref="../IR/Exp/index.html#type-t">IR.Exp.t</a> * <spanclass="type-var">'b</span>)</span> * <spanclass="type-var">'c</span>)</span> list</span><span>-></span><ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span><spanclass="type-var">'a</span><span>-></span><spanclass="type-var">'b</span><span>-></span><span>(<spanclass="type-var">'c</span> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><spanclass="type-var">'d</span> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>)</span><span>-></span> unit</code></dt><dd><p>Check the receiver of a virtual call.</p></dd></dl><dl><dtclass="spec type"id="type-resolved_param"><ahref="#type-resolved_param"class="anchor"></a><code><spanclass="keyword">type</span> resolved_param</code><code> = </code><code>{</code><tableclass="record"><trid="type-resolved_param.num"class="anchored"><tdclass="def field"><ahref="#type-resolved_param.num"class="anchor"></a><code>num : int;</code></td></tr><trid="type-resolved_param.formal"class="anchored"><tdclass="def field"><ahref="#type-resolved_param.formal"class="anchor"></a><code>formal : <ahref="../Nullsafe/AnnotatedSignature/index.html#type-param_signature">Nullsafe.AnnotatedSignature.param_signature</a>;</code></td></tr><trid="type-resolved_param.actual"class="anchored"><tdclass="def field"><ahref="#type-resolved_param.actual"class="anchor"></a><code>actual : <ahref="../IR/Exp/index.html#type-t">IR.Exp.t</a> * <ahref="../Nullsafe/InferredNullability/index.html#type-t">Nullsafe.InferredNullability.t</a>;</code></td></tr><trid="type-resolved_param.is_formal_propagates_nullable"class="anchored"><tdclass="def field"><ahref="#type-resolved_param.is_formal_propagates_nullable"class="anchor"></a><code>is_formal_propagates_nullable : bool;</code></td></tr></table><code>}</code></dt></dl><dl><dtclass="spec value"id="val-check_call_parameters"><ahref="#val-check_call_parameters"class="anchor"></a><code><spanclass="keyword">val</span> check_call_parameters : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>callee_annotated_signature:<ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a></span><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/ProcAttributes/index.html#type-t">IR.ProcAttributes.t</a><span>-></span><span><ahref="index.html#type-resolved_param">resolved_param</a> list</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../Nullsafe/TypeErr/InstrRef/index.html#type-t">Nullsafe.TypeErr.InstrRef.t</a><span>-></span> unit</code></dt><dd><p>Check the parameters of a call.</p></dd></dl><dl><dtclass="spec value"id="val-check_inheritance_rule_for_return"><ahref="#val-check_inheritance_rule_for_return"class="anchor"></a><code><spanclass="keyword">val</span> check_inheritance_rule_for_return : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>base_proc_name:<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a></span><span>-></span><span>base_nullability:<ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></span><span>-></span><span>overridden_nullability:<ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></span><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_inheritance_rule_for_param"><ahref="#val-check_inheritance_rule_for_param"class="anchor"></a><code><spanclass="keyword">val</span> check_inheritance_rule_for_param : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>overridden_param_name:<ahref="../IR/Mangled/index.html#type-t">IR.Mangled.t</a></span><span>-></span><span>base_proc_name:<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a></span><span>-></span><span>param_position:int</span><span>-></span><span>base_nullability:<ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></span><span>-></span><span>overridden_nullability:<ahref="../Nullsafe/Nullability/index.html#type-t">Nullsafe.Nullability.t</a></span><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_inheritance_rule_for_params"><ahref="#val-check_inheritance_rule_for_params"class="anchor"></a><code><spanclass="keyword">val</span> check_inheritance_rule_for_params : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>base_proc_name:<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a></span><span>-></span><span>base_signature:<ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a></span><span>-></span><span>overridden_signature:<ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a></span><span>-></span> unit</code></dt><dtclass="spec value"id="val-check_inheritance_rule_for_signature"><ahref="#val-check_inheritance_rule_for_signature"class="anchor"></a><code><spanclass="keyword">val</span> check_inheritance_rule_for_signature : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>nullsafe_mode:<ahref="../Nullsafe/NullsafeMode/index.html#type-t">Nullsafe.NullsafeMode.t</a></span><span>-></span><span>base_proc_name:<ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a></span><span>-></span><span>base_signature:<ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a></span><span>-></span><span>overridden_signature:<ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a></span><span>-></span> unit</code></dt><dd><p>Check both params and return values for complying for co- and contravariance</p></dd></dl><dl><dtclass="spec value"id="val-check_overridden_annotations"><ahref="#val-check_overridden_annotations"class="anchor"></a><code><spanclass="keyword">val</span> check_overridden_annotations : <ahref="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span>(<ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a><span>-></span><ahref="../IR/Procdesc/Node/index.html#type-t">IR.Procdesc.Node.t</a>)</span><span>-></span><ahref="../Nullsafe/AnnotatedSignature/index.html#type-t">Nullsafe.AnnotatedSignature.t</a><span>-></span> unit</code></dt><dd><p>Checks if the annotations are consistent with the derived classes and with the implemented interfaces</p></dd></dl></div></body></html>