<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Backend__CallbackOfChecker (infer.Backend__CallbackOfChecker)</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; Backend__CallbackOfChecker</nav><h1>Module <code>Backend__CallbackOfChecker</code></h1></header><aside><p>Conversions from checkers taking &quot;functional&quot; <span class="xref-unresolved" title="unresolved reference to &quot;Interprocedural.t&quot;"><code>Interprocedural</code>.t</span> et al. payloads to <span class="xref-unresolved" title="unresolved reference to &quot;Callbacks.proc_callback_t&quot;"><code>Callbacks</code>.proc_callback_t</span> and friends.</p></aside><dl><dt class="spec value" id="val-mk_interprocedural_field_t"><a href="#val-mk_interprocedural_field_t" class="anchor"></a><code><span class="keyword">val</span> mk_interprocedural_field_t : <span><span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>, <span><span class="type-var">'payload</span> option</span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span> <span>&#45;&gt;</span> <a href="../Absint/Exe_env/index.html#type-t">Absint.Exe_env.t</a> <span>&#45;&gt;</span> <a href="../Backend/Summary/index.html#type-t">Backend.Summary.t</a> <span>&#45;&gt;</span> <span>?&#8288;tenv:<a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a></span> <span>&#45;&gt;</span> unit <span>&#45;&gt;</span> <span><span class="type-var">'payload</span> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> * <span><a href="../Backend/Summary/Stats/index.html#type-t">Backend.Summary.Stats.t</a> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.ref</span></code></dt><dt class="spec value" id="val-interprocedural"><a href="#val-interprocedural" class="anchor"></a><code><span class="keyword">val</span> interprocedural : <span>f_analyze_dep:<span>(<a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span class="type-var">'payloads_orig</span> <span>&#45;&gt;</span> <span><span>(<a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> * <span class="type-var">'payloads</span>)</span> option</span>)</span></span> <span>&#45;&gt;</span> <span>get_payload:<span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a> <span>&#45;&gt;</span> <span class="type-var">'payloads_orig</span>)</span></span> <span>&#45;&gt;</span> <span>set_payload:<span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a> <span>&#45;&gt;</span> <span class="type-var">'payload_checker</span> <span>&#45;&gt;</span> <a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>)</span></span> <span>&#45;&gt;</span> <span>(<span><span class="type-var">'payloads</span> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span class="type-var">'payload_checker</span>)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-proc_callback_t">Backend.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><dt class="spec value" id="val-interprocedural_with_field"><a href="#val-interprocedural_with_field" class="anchor"></a><code><span class="keyword">val</span> interprocedural_with_field : <span><span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>, <span><span class="type-var">'payload</span> option</span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span> <span>&#45;&gt;</span> <span>(<span><span class="type-var">'payload</span> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'payload</span> option</span>)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-proc_callback_t">Backend.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><dt class="spec value" id="val-interprocedural_file"><a href="#val-interprocedural_file" class="anchor"></a><code><span class="keyword">val</span> interprocedural_file : <span><span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>, <span><span class="type-var">'payload</span> option</span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span> <span>&#45;&gt;</span> <span>(<span><span class="type-var">'payload</span> <a href="../Absint/InterproceduralAnalysis/index.html#type-file_t">Absint.InterproceduralAnalysis.file_t</a></span> <span>&#45;&gt;</span> <a href="../Absint/IssueLog/index.html#type-t">Absint.IssueLog.t</a>)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-file_callback_t">Backend.Callbacks.file_callback_t</a></code></dt><dd><p><code>interprocedural_file field checker</code> expects <code>checker</code> to compute an <span class="xref-unresolved" title="unresolved reference to &quot;IssueLog.t&quot;"><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><dt class="spec value" id="val-intraprocedural"><a href="#val-intraprocedural" class="anchor"></a><code><span class="keyword">val</span> intraprocedural : <span>(<a href="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a> <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-proc_callback_t">Backend.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><dt class="spec value" id="val-intraprocedural_with_field_dependency"><a href="#val-intraprocedural_with_field_dependency" class="anchor"></a><code><span class="keyword">val</span> intraprocedural_with_field_dependency : <span><span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>, <span class="type-var">'payload</span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span> <span>&#45;&gt;</span> <span>(<a href="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a> <span>&#45;&gt;</span> <span class="type-var">'payload</span> <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-proc_callback_t">Backend.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><dt class="spec value" id="val-intraprocedural_with_field"><a href="#val-intraprocedural_with_field" class="anchor"></a><code><span class="keyword">val</span> intraprocedural_with_field : <span><span>(<a href="../Backend/Payloads/index.html#type-t">Backend.Payloads.t</a>, <span><span class="type-var">'payload</span> option</span>)</span> <a href="../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Field.t</span> <span>&#45;&gt;</span> <span>(<a href="../Absint/IntraproceduralAnalysis/index.html#type-t">Absint.IntraproceduralAnalysis.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'payload</span> option</span>)</span> <span>&#45;&gt;</span> <a href="../Backend/Callbacks/index.html#type-proc_callback_t">Backend.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>