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>CallbackOfChecker (infer.Backend.CallbackOfChecker)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.1"/><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">Backend</a>» CallbackOfChecker</nav><h1>Module <code>Backend.CallbackOfChecker</code></h1></header><aside><p>Conversions from checkers taking "functional"<spanclass="xref-unresolved"title="unresolved reference to "Interprocedural.t""><code>Interprocedural</code>.t</span> et al. payloads to <ahref="../Callbacks/index.html#type-proc_callback_t"><code>Callbacks.proc_callback_t</code></a> and friends.</p></aside><dl><dtclass="spec value"id="val-mk_interprocedural_field_t"><ahref="#val-mk_interprocedural_field_t"class="anchor"></a><code><spanclass="keyword">val</span> mk_interprocedural_field_t : <span><span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a>,<span><spanclass="type-var">'payload</span> option</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span><span>-></span><ahref="../../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a><span>-></span><ahref="../Summary/index.html#type-t">Summary.t</a><span>-></span><span>?⁠tenv:<ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a></span><span>-></span> unit <span>-></span><span><spanclass="type-var">'payload</span><ahref="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> * <span><ahref="../Summary/Stats/index.html#type-t">Summary.Stats.t</a><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.ref</span></code></dt><dtclass="spec value"id="val-interprocedural"><ahref="#val-interprocedural"class="anchor"></a><code><spanclass="keyword">val</span> interprocedural : <span>f_analyze_dep:<span>(<ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a><span>-></span><spanclass="type-var">'payloads_orig</span><span>-></span><span><span>(<ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> * <spanclass="type-var">'payloads</span>)</span> option</span>)</span></span><span>-></span><span>f_analyze_pdesc_dep:<span>(<spanclass="type-var">'payloads_orig</span><span>-></span><span><spanclass="type-var">'payloads</span> option</span>)</span></span><span>-></span><span>get_payload:<span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a><span>-></span><spanclass="type-var">'payloads_orig</span>)</span></span><span>-></span><span>set_payload:<span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a><span>-></span><spanclass="type-var">'payload_checker</span><span>-></span><ahref="../Payloads/index.html#type-t">Payloads.t</a>)</span></span><span>-></span><span>(<span><spanclass="type-var">'payloads</span><ahref="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span><span>-></span><spanclass="type-var">'payload_checker</span>)</span><span>-></span><ahref="../Callbacks/index.html#type-proc_callback_t">Callbacks.proc_callback_t</a></code></dt><dd><p>the general form of interprocedural checkers: can read and update several payloads, and massage analysis results (mostly used to join option types)</p></dd></dl><dl><dtclass="spec value"id="val-interprocedural_with_field"><ahref="#val-interprocedural_with_field"class="anchor"></a><code><spanclass="keyword">val</span> interprocedural_with_field : <span><span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a>,<span><spanclass="type-var">'payload</span> option</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span><span>-></span><span>(<span><spanclass="type-var">'payload</span><ahref="../../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span><span>-></span><span><spanclass="type-var">'payload</span> option</span>)</span><span>-></span><ahref="../Callbacks/index.html#type-proc_callback_t">Callbacks.proc_callback_t</a></code></dt><dd><p><code>interprocedural field checker</code> expects <code>checker</code> to compute a payload (option) suitable for <code>field</code>, given an inter-procedural analysis of callees that computes the same payload type</p></dd></dl><dl><dtclass="spec value"id="val-interprocedural_file"><ahref="#val-interprocedural_file"class="anchor"></a><code><spanclass="keyword">val</span> interprocedural_file : <span><span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a>,<span><spanclass="type-var">'payload</span> option</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span><span>-></span><span>(<span><spanclass="type-var">'payload</span><ahref="../../Absint/InterproceduralAnalysis/index.html#type-file_t">Absint.InterproceduralAnalysis.file_t</a></span><span>-></span><ahref="../../Absint/IssueLog/index.html#type-t">Absint.IssueLog.t</a>)</span><span>-></span><ahref="../Callbacks/index.html#type-file_callback_t">Callbacks.file_callback_t</a></code></dt><dd><p><code>interprocedural_file field checker</code> expects <code>checker</code> to compute an <spanclass="xref-unresolved"title="unresolved reference to "IssueLog.t""><code>IssueLog</code>.t</span> from the file-level analysis, given an inter-procedural analysis of dependencies that computes the payload type corresponding to <code>field</code></p></dd></dl><dl><dtclass="spec value"id="val-intraprocedural"><ahref="#val-intraprocedural"class="anchor"></a><code><spanclass="keyword">val</span> intraprocedural : <span>(<ahref="../../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span> unit)</span><span>-></span><ahref="../Callbacks/index.html#type-proc_callback_t">Callbacks.proc_callback_t</a></code></dt><dd><p>runs a simple intra-procedural analysis (one that doesn't need the results of the analysis on any transitive dependencies to analyze a given procedure)</p></dd></dl><dl><dtclass="spec value"id="val-intraprocedural_with_field_dependency"><ahref="#val-intraprocedural_with_field_dependency"class="anchor"></a><code><spanclass="keyword">val</span> intraprocedural_with_field_dependency : <span><span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a>,<spanclass="type-var">'payload</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span><span>-></span><span>(<ahref="../../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><spanclass="type-var">'payload</span><span>-></span> unit)</span><span>-></span><ahref="../Callbacks/index.html#type-proc_callback_t">Callbacks.proc_callback_t</a></code></dt><dd><p>an intra-procedural analysis that depends on the summary payload found by another</p></dd></dl><dl><dtclass="spec value"id="val-intraprocedural_with_field"><ahref="#val-intraprocedural_with_field"class="anchor"></a><code><spanclass="keyword">val</span> intraprocedural_with_field : <span><span>(<ahref="../Payloads/index.html#type-t">Payloads.t</a>,<span><spanclass="type-var">'payload</span> option</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span><span>-></span><span>(<ahref="../../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a><span>-></span><span><spanclass="type-var">'payload</span> option</span>)</span><span>-></span><ahref="../Callbacks/index.html#type-proc_callback_t">Callbacks.proc_callback_t</a></code></dt><dd><p>runs an intra-procedural analysis that nonetheless produces a payload</p></dd></dl></div></body></html>