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.

5 lines
5.4 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferModules__Rearrange (infer.InferModules__Rearrange)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../index.html">infer</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferModules__Rearrange</span></h1></header><p>Re-arrangement and extension of structures with fresh variables</p><div class="spec exception" id="exception-ARRAY_ACCESS"><a href="#exception-ARRAY_ACCESS" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">ARRAY_ACCESS</span></code></div><div class="doc"></div></div><div class="spec val" id="val-is_only_pt_by_fld_or_param_nonnull"><a href="#val-is_only_pt_by_fld_or_param_nonnull" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_only_pt_by_fld_or_param_nonnull : <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-check_dereference_error"><a href="#val-check_dereference_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>check_dereference_error : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Check for dereference errors: dereferencing 0, a freed value, or an undefined value</p></div></div><div class="spec val" id="val-check_call_to_objc_block_error"><a href="#val-check_call_to_objc_block_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>check_call_to_objc_block_error : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Check that an expression representing an objc block can be null and raise a <code class="code">B1</code> null exception.
It's used to check that we don't call possibly null blocks</p></div></div><div class="spec val" id="val-rearrange"><a href="#val-rearrange" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rearrange : ?&#8288;report_deref_errors:bool <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Sil/index.html#type-offset">InferIR.Sil.offset</a> list <a href="../InferModules/Prop/index.html#type-prop_iter">InferModules.Prop.prop_iter</a> list</code></div><div class="doc"><p><code class="code">rearrange lexp prop</code> rearranges <code class="code">prop</code> into the form <code class="code">prop' * lexp|-&gt;strexp:typ</code>.
It returns an iterator with <code class="code">lexp |-&gt; strexp: typ</code> as current predicate
and the path (an <code class="code">offsetlist</code>) which leads to <code class="code">lexp</code> as the iterator state.</p></div></div></body></html>