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
8.3 KiB

This file contains invisible Unicode characters!

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>
<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.0"/><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>f_analyze_pdesc_dep:<span>(<span class="type-var">'payloads_orig</span> <span>&#45;&gt;</span> <span><span class="type-var">'payloads</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="../IR/IssueLog/index.html#type-t">IR.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>