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.

4 lines
8.4 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__HilExp (InferIR.InferIR__HilExp)</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">InferIR</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferIR__HilExp</span></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>F = Format</code></div><div class="doc"></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-t.AccessExpression" class="anchored"><td class="def constructor"><a href="#type-t.AccessExpression" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">AccessExpression</span><span class="keyword"> of </span><a href="../InferIR/AccessExpression/index.html#type-t">InferIR.AccessExpression.t</a></code></td><td class="doc"><p>(** access path (e.g., x.f.g or x<code class="code">i</code>) *)</p></td></tr><tr id="type-t.UnaryOperator" class="anchored"><td class="def constructor"><a href="#type-t.UnaryOperator" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">UnaryOperator</span><span class="keyword"> of </span><a href="../InferIR/Unop/index.html#type-t">InferIR.Unop.t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="../InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> option</code></td><td class="doc"><p>(** Unary operator with type of the result if known *)</p></td></tr><tr id="type-t.BinaryOperator" class="anchored"><td class="def constructor"><a href="#type-t.BinaryOperator" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">BinaryOperator</span><span class="keyword"> of </span><a href="../InferIR/Binop/index.html#type-t">InferIR.Binop.t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a></code></td><td class="doc"><p>(** Binary operator *)</p></td></tr><tr id="type-t.Exception" class="anchored"><td class="def constructor"><a href="#type-t.Exception" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Exception</span><span class="keyword"> of </span><a href="index.html#type-t">t</a></code></td><td class="doc"><p>(** Exception *)</p></td></tr><tr id="type-t.Closure" class="anchored"><td class="def constructor"><a href="#type-t.Closure" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Closure</span><span class="keyword"> of </span><a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a><span class="keyword"> * </span>(<a href="../InferIR/AccessPath/index.html#type-base">InferIR.AccessPath.base</a><span class="keyword"> * </span><a href="index.html#type-t">t</a>) list</code></td><td class="doc"><p>(** Name of function + environment *)</p></td></tr><tr id="type-t.Constant" class="anchored"><td class="def constructor"><a href="#type-t.Constant" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Constant</span><span class="keyword"> of </span><a href="../InferIR/Const/index.html#type-t">InferIR.Const.t</a></code></td><td class="doc"><p>(** Constants *)</p></td></tr><tr id="type-t.Cast" class="anchored"><td class="def constructor"><a href="#type-t.Cast" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Cast</span><span class="keyword"> of </span><a href="../InferIR/Typ/index.html#type-t">I
canonical documentation *)</p></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : <a href="index.html#module-F">F</a>.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-get_typ"><a href="#val-get_typ" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_typ : <a href="../InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> option</code></div><div class="doc"><p>Get the type of the expression. Warning: not fully implemented</p></div></div><div class="spec val" id="val-of_sil"><a href="#val-of_sil" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_sil : include_array_indexes:bool <span class="keyword">&#8209;&gt;</span> f_resolve_id:(<a href="../InferIR/Var/index.html#type-t">InferIR.Var.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/AccessExpression/index.html#type-t">InferIR.AccessExpression.t</a> option) <span class="keyword">&#8209;&gt;</span> add_deref:bool <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Convert SIL expression to HIL expression</p></div></div><div class="spec val" id="val-get_access_exprs"><a href="#val-get_access_exprs" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_access_exprs : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/AccessExpression/index.html#type-t">InferIR.AccessExpression.t</a> list</code></div><div class="doc"><p>Get all the access paths used in the given HIL expression, including duplicates if a path is
used more than once.</p></div></div><div class="spec val" id="val-is_null_literal"><a href="#val-is_null_literal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_null_literal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-is_int_zero"><a href="#val-is_int_zero" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_int_zero : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-eval"><a href="#val-eval" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>eval : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Const/index.html#type-t">InferIR.Const.t</a> option</code></div><div class="doc"></div></div></body></html>