ocaml-trace/ppxlib/Ppxlib/index.html
2025-01-13 18:31:05 +00:00

70 lines
No EOL
304 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ppxlib (ppxlib.Ppxlib)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../index.html">ppxlib</a> &#x00BB; Ppxlib</nav><header class="odoc-preamble"><h1>Module <code><span>Ppxlib</span></code></h1><p>Standard library for ppx rewriters</p></header><nav class="odoc-toc"><ul><li><a href="#the-core-ppxlib-entries">The core <code>ppxlib</code> entries</a><ul><li><a href="#manipulating-the-ast">Manipulating the AST</a></li><li><a href="#context-free-rewriting">Context-free rewriting</a></li><li><a href="#other-helpers">Other helpers</a></li><li><a href="#driver-related-modules">Driver-related modules</a></li><li><a href="#checks">Checks</a></li><li><a href="#common-helper-functions">Common helper functions</a></li></ul></li><li><a href="#modules-from-other-libraries">Modules from other libraries</a></li><li><a href="#the-whole-ast-types">The whole AST types</a></li></ul></nav><div class="odoc-content"><p><code>ppxlib</code> is meant to be opened globally in your PPX source files.</p><p>Opening it comes with two advantages. First, it will shadow the <code>compiler-libs</code> modules. The <code>compiler-libs</code> modules are unstable and aren't meant to be used, so shadowing them is a good protection mechanism. In case you don't want to open <code>Ppxlib</code>, you can open <code>Ocaml_shadow</code> to get the same protection. Second, it will bring several modules in scope, that are useful to have when writing a rewriter:</p><ul><li>The main <code>ppxlib</code> modules, such as modules to help manipulate the AST (<a href="Ast_builder/index.html"><code>Ast_builder</code></a>, <a href="Ast_pattern/index.html"><code>Ast_pattern</code></a>), and a few functions.</li><li>Modules from other libraries, such as <a href="../Ppxlib_ast/Ast_helper/index.html"><code>Ast_helper</code></a> or <a href="../Astlib/Pprintast/index.html"><code>Pprintast</code></a>,</li><li>The whole AST types (by <code>including</code> the <a href="../Ppxlib_ast/Ast/index.html"><code>Ast</code></a> module).</li></ul><h2 id="the-core-ppxlib-entries"><a href="#the-core-ppxlib-entries" class="anchor"></a>The core <code>ppxlib</code> entries</h2><h3 id="manipulating-the-ast"><a href="#manipulating-the-ast" class="anchor"></a>Manipulating the AST</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_builder"><a href="#module-Ast_builder" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ast_builder/index.html">Ast_builder</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p><code>Ast_builder</code> is a module to generate OCaml AST fragments. It provides a shorter syntax than directly using the <a href="../Astlib/Ast_500/Parsetree/index.html"><code>Parsetree</code></a> constructors, as well as a better stability than the constructors.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_pattern"><a href="#module-Ast_pattern" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ast_pattern/index.html">Ast_pattern</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module implements first class AST patterns. It allows to destruct and extract values from AST fragments. This gives the same functionality as a pattern-match, but with simpler syntax and more stability than directly pattern-matching on the <a href="../Astlib/Ast_500/Parsetree/index.html"><code>Parsetree</code></a> constructors.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_traverse"><a href="#module-Ast_traverse" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ast_traverse/index.html">Ast_traverse</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module provides AST traversal classes, such as maps, iterations, folds, etc. on the <a href="../Astlib/Ast_500/Parsetree/index.html"><code>Parsetree</code></a> types.</p></div></div><h3 id="context-free-rewriting"><a href="#context-free-rewriting" class="anchor"></a>Context-free rewriting</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Context_free"><a href="#module-Context_free" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Context_free/index.html">Context_free</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Context free rewriting, to define local rewriting rules that will all be applied at once by the driver.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Deriving"><a href="#module-Deriving" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Deriving/index.html">Deriving</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Deriving code from type declarations.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Extension"><a href="#module-Extension" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Extension/index.html">Extension</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Declare extenders to rewrite extension nodes.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Expansion_context"><a href="#module-Expansion_context" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Expansion_context/index.html">Expansion_context</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The context given to rewriting rules when expanding.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Code_path"><a href="#module-Code_path" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Code_path/index.html">Code_path</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module contains type and functions for representing and manipulating path to AST nodes.</p></div></div><h3 id="other-helpers"><a href="#other-helpers" class="anchor"></a>Other helpers</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Expansion_helpers"><a href="#module-Expansion_helpers" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Expansion_helpers/index.html">Expansion_helpers</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Various helpers for expansion, such as quoting expressions in their context, or mangling names.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Merlin_helpers"><a href="#module-Merlin_helpers" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Merlin_helpers/index.html">Merlin_helpers</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Some helpers to annotate the AST so merlin can decide which branches to look at and which branches to ignore.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Spellcheck"><a href="#module-Spellcheck" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Spellcheck/index.html">Spellcheck</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Helpers to provide hints to PPX users for typos or spellchecks.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Keyword"><a href="#module-Keyword" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Keyword/index.html">Keyword</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Small module to check if a string is an OCaml keyword.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Pp_ast"><a href="#module-Pp_ast" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Pp_ast/index.html">Pp_ast</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module implements pretty printers for the OCaml AST's version used by ppxlib.</p></div></div><h3 id="driver-related-modules"><a href="#driver-related-modules" class="anchor"></a>Driver-related modules</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Driver"><a href="#module-Driver" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Driver/index.html">Driver</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Interaction with the driver, such as getting/seeting cookies, adding arguments.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Caller_id"><a href="#module-Caller_id" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Caller_id/index.html">Caller_id</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Small helper to find out who is the caller of a function</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_io"><a href="#module-Ast_io" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ast_io/index.html">Ast_io</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A small module to help read <code>bin-annots</code> generated files.</p></div></div><h3 id="checks"><a href="#checks" class="anchor"></a>Checks</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Attribute"><a href="#module-Attribute" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Attribute/index.html">Attribute</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>This module provides hygiene for attributes. The goal is to report misuses of attributes to the user as soon as possible so that no mistyped attribute get silently ignored.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Reserved_namespaces"><a href="#module-Reserved_namespaces" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Reserved_namespaces/index.html">Reserved_namespaces</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Small module to reserve namespaces in attribute names.</p></div></div><h3 id="common-helper-functions"><a href="#common-helper-functions" class="anchor"></a>Common helper functions</h3><div class="odoc-spec"><div class="spec value anchored" id="val-lident"><a href="#val-lident" class="anchor"></a><code><span><span class="keyword">val</span> lident : <span>string <span class="arrow">&#45;&gt;</span></span> <a href="Longident/index.html#type-t">Longident.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-core_type_of_type_declaration"><a href="#val-core_type_of_type_declaration" class="anchor"></a><code><span><span class="keyword">val</span> core_type_of_type_declaration :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-name_type_params_in_td_res"><a href="#val-name_type_params_in_td_res" class="anchor"></a><code><span><span class="keyword">val</span> name_type_params_in_td_res :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a>,
<span><a href="Location/Error/index.html#type-t">Location.Error.t</a> <a href="../Stdppx/NonEmptyList/index.html#type-t">Stdppx.NonEmptyList.t</a></span>)</span>
<a href="../../ocaml/Stdlib/index.html#type-result">result</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-name_type_params_in_td"><a href="#val-name_type_params_in_td" class="anchor"></a><code><span><span class="keyword">val</span> name_type_params_in_td :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-combinator_type_of_type_declaration"><a href="#val-combinator_type_of_type_declaration" class="anchor"></a><code><span><span class="keyword">val</span> combinator_type_of_type_declaration :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> <span class="arrow">&#45;&gt;</span></span>
<span>f:
<span>(<span>loc:<a href="Location/index.html#type-t">Location.t</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a>)</span> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-gen_symbol"><a href="#val-gen_symbol" class="anchor"></a><code><span><span class="keyword">val</span> gen_symbol : <span>?prefix:string <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p><code>gen_symbol ?prefix ()</code> generates a fresh variable name with <code>prefix</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">prefix</span> <p>default = &quot;_x&quot;</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string_of_core_type"><a href="#val-string_of_core_type" class="anchor"></a><code><span><span class="keyword">val</span> string_of_core_type : <span><a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-assert_no_attributes"><a href="#val-assert_no_attributes" class="anchor"></a><code><span><span class="keyword">val</span> assert_no_attributes : <span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a> list</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-assert_no_attributes_in"><a href="#val-assert_no_attributes_in" class="anchor"></a><code><span><span class="keyword">val</span> assert_no_attributes_in : <span class="xref-unresolved">Ppxlib__.Ast_traverse0.iter</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attributes_errors"><a href="#val-attributes_errors" class="anchor"></a><code><span><span class="keyword">val</span> attributes_errors :
<span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="Location/Error/index.html#type-t">Location.Error.t</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-collect_attributes_errors"><a href="#val-collect_attributes_errors" class="anchor"></a><code><span><span class="keyword">val</span> collect_attributes_errors :
<span><span><a href="Location/Error/index.html#type-t">Location.Error.t</a> list</span> <span class="xref-unresolved">Ppxlib__.Ast_traverse0.fold</span></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_type_param_name_res"><a href="#val-get_type_param_name_res" class="anchor"></a><code><span><span class="keyword">val</span> get_type_param_name_res :
<span><span>(<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a>
* <span>(<a href="../Astlib/Ast_500/Asttypes/index.html#type-variance">Astlib.Ast_500.Asttypes.variance</a> * <a href="../Astlib/Ast_500/Asttypes/index.html#type-injectivity">Astlib.Ast_500.Asttypes.injectivity</a>)</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span>string <a href="Loc/index.html#type-t">Loc.t</a></span>, <span><a href="Location/Error/index.html#type-t">Location.Error.t</a> <a href="../Stdppx/NonEmptyList/index.html#type-t">Stdppx.NonEmptyList.t</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-result">result</a></span></span></code></div><div class="spec-doc"><p><code>get_type_param_name_res tp</code> returns the string identifier associated with <code>tp</code> if it is a type parameter, as a result.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_type_param_name"><a href="#val-get_type_param_name" class="anchor"></a><code><span><span class="keyword">val</span> get_type_param_name :
<span><span>(<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a>
* <span>(<a href="../Astlib/Ast_500/Asttypes/index.html#type-variance">Astlib.Ast_500.Asttypes.variance</a> * <a href="../Astlib/Ast_500/Asttypes/index.html#type-injectivity">Astlib.Ast_500.Asttypes.injectivity</a>)</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span>string <a href="Loc/index.html#type-t">Loc.t</a></span></span></code></div><div class="spec-doc"><p>See <a href="#val-get_type_param_name_res"><code>get_type_param_name_res</code></a>. Raises a located error in case of failure.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-type_is_recursive"><a href="#class-type_is_recursive" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-type_is_recursive/index.html">type_is_recursive</a></span><span> : <span><a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag">Astlib.Ast_500.Asttypes.rec_flag</a> <span class="arrow">&#45;&gt;</span></span> <span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a>
list</span> <span class="arrow">&#45;&gt;</span></span> <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p><code>(new type_is_recursive rec_flag tds)#go ()</code> returns whether <code>rec_flag, tds</code> is really a recursive type. We disregard recursive occurrences appearing in arrow types. You can override the search for certain type expressions by inheriting from this class.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-really_recursive"><a href="#val-really_recursive" class="anchor"></a><code><span><span class="keyword">val</span> really_recursive :
<span><a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag">Astlib.Ast_500.Asttypes.rec_flag</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag">Astlib.Ast_500.Asttypes.rec_flag</a></span></code></div><div class="spec-doc"><p><code>really_recursive rec_flag tds = (new type_is_recursive rec_flag tds)#go ()</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-loc_of_payload"><a href="#val-loc_of_payload" class="anchor"></a><code><span><span class="keyword">val</span> loc_of_payload : <span><a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a> <span class="arrow">&#45;&gt;</span></span> <a href="Location/index.html#type-t">Location.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-loc_of_attribute"><a href="#val-loc_of_attribute" class="anchor"></a><code><span><span class="keyword">val</span> loc_of_attribute : <span><a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a> <span class="arrow">&#45;&gt;</span></span> <a href="Location/index.html#type-t">Location.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-loc_of_extension"><a href="#val-loc_of_extension" class="anchor"></a><code><span><span class="keyword">val</span> loc_of_extension :
<span><span>(<span>string <a href="../Astlib/Location/index.html#type-loc">Astlib.Location.loc</a></span> * <a href="../Astlib/Ast_500/Parsetree/index.html#type-payload">Astlib.Ast_500.Parsetree.payload</a>)</span> <span class="arrow">&#45;&gt;</span></span>
<a href="Location/index.html#type-t">Location.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-curry_applications"><a href="#val-curry_applications" class="anchor"></a><code><span><span class="keyword">val</span> curry_applications :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-expression">Astlib.Ast_500.Parsetree.expression</a> <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-expression">Astlib.Ast_500.Parsetree.expression</a></span></code></div><div class="spec-doc"><p>convert multi-arg function applications into a cascade of 1-arg applications</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attribute_of_warning"><a href="#val-attribute_of_warning" class="anchor"></a><code><span><span class="keyword">val</span> attribute_of_warning :
<span><a href="Location/index.html#type-t">Location.t</a> <span class="arrow">&#45;&gt;</span></span>
<span>string <span class="arrow">&#45;&gt;</span></span>
<a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a></span></code></div><div class="spec-doc"><p>Encode a warning message into an 'ocaml.ppwarning' attribute which can be inserted in a generated Parsetree. The compiler will be responsible for reporting the warning.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_polymorphic_variant"><a href="#val-is_polymorphic_variant" class="anchor"></a><code><span><span class="keyword">val</span> is_polymorphic_variant :
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> <span class="arrow">&#45;&gt;</span></span>
<span>sig_:bool <span class="arrow">&#45;&gt;</span></span>
<span>[&gt; `Definitely <span>| `Maybe</span> <span>| `Surely_not</span> ]</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mk_named_sig"><a href="#val-mk_named_sig" class="anchor"></a><code><span><span class="keyword">val</span> mk_named_sig :
<span>loc:<a href="Location/index.html#type-t">Location.t</a> <span class="arrow">&#45;&gt;</span></span>
<span>sg_name:string <span class="arrow">&#45;&gt;</span></span>
<span>handle_polymorphic_variant:bool <span class="arrow">&#45;&gt;</span></span>
<span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><a href="../Astlib/Ast_500/Parsetree/index.html#type-module_type">Astlib.Ast_500.Parsetree.module_type</a> <a href="../Astlib/Ast_500/Parsetree/index.html#type-include_infos">Astlib.Ast_500.Parsetree.include_infos</a></span>
option</span></span></code></div><div class="spec-doc"><p><code>mk_named_sig ~loc ~sg_name:&quot;Foo&quot; ~handle_polymorphic_variant tds</code> will generate</p><pre class="language-ocaml"><code>include Foo (* or Foo1, Foo2, Foo3 *)
with type (* ('a, 'b, 'c) *) t := (* ('a, 'b, 'c) *) t</code></pre><p>when:</p><ul><li>there is only one type declaration</li><li>the type is named t</li><li>there are less than 4 type parameters</li><li>there are no constraints on the type parameters</li></ul><p>It will take care of giving fresh names to unnamed type parameters.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exn_to_loc_error"><a href="#val-exn_to_loc_error" class="anchor"></a><code><span><span class="keyword">val</span> exn_to_loc_error : <span>exn <span class="arrow">&#45;&gt;</span></span> <a href="Location/Error/index.html#type-t">Location.Error.t</a></span></code></div><div class="spec-doc"><p>Convert <code>exn</code> to a located error if possible or reraise it otherwise</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-With_errors"><a href="#module-With_errors" class="anchor"></a><code><span><span class="keyword">module</span> <a href="With_errors/index.html">With_errors</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h2 id="modules-from-other-libraries"><a href="#modules-from-other-libraries" class="anchor"></a>Modules from other libraries</h2><p>Expose some modules from <a href="../Ppxlib_ast/index.html"><code>Ppxlib_ast</code></a>.</p><div class="odoc-spec"><div class="spec module anchored" id="module-Ast"><a href="#module-Ast" class="anchor"></a><code><span><span class="keyword">module</span> Ast</span><span> = <a href="../Ppxlib_ast/Ast/index.html">Ppxlib_ast.Ast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_helper"><a href="#module-Ast_helper" class="anchor"></a><code><span><span class="keyword">module</span> Ast_helper</span><span> = <a href="../Ppxlib_ast/Ast_helper/index.html">Ppxlib_ast.Ast_helper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Asttypes"><a href="#module-Asttypes" class="anchor"></a><code><span><span class="keyword">module</span> Asttypes</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html">Ppxlib_ast.Asttypes</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Parse"><a href="#module-Parse" class="anchor"></a><code><span><span class="keyword">module</span> Parse</span><span> = <a href="../Ppxlib_ast/Parse/index.html">Ppxlib_ast.Parse</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Parsetree"><a href="#module-Parsetree" class="anchor"></a><code><span><span class="keyword">module</span> Parsetree</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html">Ppxlib_ast.Parsetree</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Pprintast"><a href="#module-Pprintast" class="anchor"></a><code><span><span class="keyword">module</span> Pprintast</span><span> = <a href="../Astlib/Pprintast/index.html">Ppxlib_ast.Pprintast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Selected_ast"><a href="#module-Selected_ast" class="anchor"></a><code><span><span class="keyword">module</span> Selected_ast</span><span> = <a href="../Ppxlib_ast/Selected_ast/index.html">Ppxlib_ast.Selected_ast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Location"><a href="#module-Location" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Location/index.html">Location</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Overrides the <code>Location</code> module of OCaml</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Longident"><a href="#module-Longident" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Longident/index.html">Longident</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Overrides the <code>Longident</code> module of OCaml</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Loc"><a href="#module-Loc" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Loc/index.html">Loc</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Located items</p></div></div><h2 id="the-whole-ast-types"><a href="#the-whole-ast-types" class="anchor"></a>The whole AST types</h2><div class="odoc-include"><div class="spec-doc"><p>Include all the Ast definitions since we need them in every single ppx</p></div><details><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <a href="../Ppxlib_ast/Ast/index.html">Ast</a> <span class="keyword">end</span></span></code></summary><div class="odoc-spec"><div class="spec type anchored" id="type-position"><a href="#type-position" class="anchor"></a><code><span><span class="keyword">type</span> position</span><span> = <a href="../../ocaml/Stdlib/Lexing/index.html#type-position">Stdlib.Lexing.position</a></span><span> = </span><span>{</span></code><ol><li id="type-position.pos_fname" class="def record field anchored"><a href="#type-position.pos_fname" class="anchor"></a><code><span>pos_fname : string;</span></code></li><li id="type-position.pos_lnum" class="def record field anchored"><a href="#type-position.pos_lnum" class="anchor"></a><code><span>pos_lnum : int;</span></code></li><li id="type-position.pos_bol" class="def record field anchored"><a href="#type-position.pos_bol" class="anchor"></a><code><span>pos_bol : int;</span></code></li><li id="type-position.pos_cnum" class="def record field anchored"><a href="#type-position.pos_cnum" class="anchor"></a><code><span>pos_cnum : int;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-location"><a href="#type-location" class="anchor"></a><code><span><span class="keyword">and</span> location</span><span> = <a href="../Astlib/Location/index.html#type-t">Astlib.Location.t</a></span><span> = </span><span>{</span></code><ol><li id="type-location.loc_start" class="def record field anchored"><a href="#type-location.loc_start" class="anchor"></a><code><span>loc_start : <a href="#type-position">position</a>;</span></code></li><li id="type-location.loc_end" class="def record field anchored"><a href="#type-location.loc_end" class="anchor"></a><code><span>loc_end : <a href="#type-position">position</a>;</span></code></li><li id="type-location.loc_ghost" class="def record field anchored"><a href="#type-location.loc_ghost" class="anchor"></a><code><span>loc_ghost : bool;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-location_stack"><a href="#type-location_stack" class="anchor"></a><code><span><span class="keyword">and</span> location_stack</span><span> = <span><a href="#type-location">location</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-loc"><a href="#type-loc" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a loc</span></span><span> = <span><span class="type-var">'a</span> <a href="../Astlib/Location/index.html#type-loc">Astlib.Location.loc</a></span></span><span> = </span><span>{</span></code><ol><li id="type-loc.txt" class="def record field anchored"><a href="#type-loc.txt" class="anchor"></a><code><span>txt : <span class="type-var">'a</span>;</span></code></li><li id="type-loc.loc" class="def record field anchored"><a href="#type-loc.loc" class="anchor"></a><code><span>loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-longident"><a href="#type-longident" class="anchor"></a><code><span><span class="keyword">and</span> longident</span><span> = <a href="../Astlib/Longident/index.html#type-t">Astlib.Longident.t</a></span><span> = </span></code><ol><li id="type-longident.Lident" class="def variant constructor anchored"><a href="#type-longident.Lident" class="anchor"></a><code><span>| </span><span><span class="constructor">Lident</span> <span class="keyword">of</span> string</span></code></li><li id="type-longident.Ldot" class="def variant constructor anchored"><a href="#type-longident.Ldot" class="anchor"></a><code><span>| </span><span><span class="constructor">Ldot</span> <span class="keyword">of</span> <a href="#type-longident">longident</a> * string</span></code></li><li id="type-longident.Lapply" class="def variant constructor anchored"><a href="#type-longident.Lapply" class="anchor"></a><code><span>| </span><span><span class="constructor">Lapply</span> <span class="keyword">of</span> <a href="#type-longident">longident</a> * <a href="#type-longident">longident</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-longident_loc"><a href="#type-longident_loc" class="anchor"></a><code><span><span class="keyword">and</span> longident_loc</span><span> = <span><a href="#type-longident">longident</a> <a href="#type-loc">loc</a></span></span></code></div></div><p>Auxiliary AST types used by parsetree and typedtree.</p><div class="odoc-spec"><div class="spec type anchored" id="type-rec_flag"><a href="#type-rec_flag" class="anchor"></a><code><span><span class="keyword">and</span> rec_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag">Astlib.Ast_500.Asttypes.rec_flag</a></span><span> = </span></code><ol><li id="type-rec_flag.Nonrecursive" class="def variant constructor anchored"><a href="#type-rec_flag.Nonrecursive" class="anchor"></a><code><span>| </span><span><span class="constructor">Nonrecursive</span></span></code></li><li id="type-rec_flag.Recursive" class="def variant constructor anchored"><a href="#type-rec_flag.Recursive" class="anchor"></a><code><span>| </span><span><span class="constructor">Recursive</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-direction_flag"><a href="#type-direction_flag" class="anchor"></a><code><span><span class="keyword">and</span> direction_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-direction_flag">Astlib.Ast_500.Asttypes.direction_flag</a></span><span> = </span></code><ol><li id="type-direction_flag.Upto" class="def variant constructor anchored"><a href="#type-direction_flag.Upto" class="anchor"></a><code><span>| </span><span><span class="constructor">Upto</span></span></code></li><li id="type-direction_flag.Downto" class="def variant constructor anchored"><a href="#type-direction_flag.Downto" class="anchor"></a><code><span>| </span><span><span class="constructor">Downto</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-private_flag"><a href="#type-private_flag" class="anchor"></a><code><span><span class="keyword">and</span> private_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-private_flag">Astlib.Ast_500.Asttypes.private_flag</a></span><span> = </span></code><ol><li id="type-private_flag.Private" class="def variant constructor anchored"><a href="#type-private_flag.Private" class="anchor"></a><code><span>| </span><span><span class="constructor">Private</span></span></code></li><li id="type-private_flag.Public" class="def variant constructor anchored"><a href="#type-private_flag.Public" class="anchor"></a><code><span>| </span><span><span class="constructor">Public</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-mutable_flag"><a href="#type-mutable_flag" class="anchor"></a><code><span><span class="keyword">and</span> mutable_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag">Astlib.Ast_500.Asttypes.mutable_flag</a></span><span> = </span></code><ol><li id="type-mutable_flag.Immutable" class="def variant constructor anchored"><a href="#type-mutable_flag.Immutable" class="anchor"></a><code><span>| </span><span><span class="constructor">Immutable</span></span></code></li><li id="type-mutable_flag.Mutable" class="def variant constructor anchored"><a href="#type-mutable_flag.Mutable" class="anchor"></a><code><span>| </span><span><span class="constructor">Mutable</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-virtual_flag"><a href="#type-virtual_flag" class="anchor"></a><code><span><span class="keyword">and</span> virtual_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-virtual_flag">Astlib.Ast_500.Asttypes.virtual_flag</a></span><span> = </span></code><ol><li id="type-virtual_flag.Virtual" class="def variant constructor anchored"><a href="#type-virtual_flag.Virtual" class="anchor"></a><code><span>| </span><span><span class="constructor">Virtual</span></span></code></li><li id="type-virtual_flag.Concrete" class="def variant constructor anchored"><a href="#type-virtual_flag.Concrete" class="anchor"></a><code><span>| </span><span><span class="constructor">Concrete</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-override_flag"><a href="#type-override_flag" class="anchor"></a><code><span><span class="keyword">and</span> override_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag">Astlib.Ast_500.Asttypes.override_flag</a></span><span> = </span></code><ol><li id="type-override_flag.Override" class="def variant constructor anchored"><a href="#type-override_flag.Override" class="anchor"></a><code><span>| </span><span><span class="constructor">Override</span></span></code></li><li id="type-override_flag.Fresh" class="def variant constructor anchored"><a href="#type-override_flag.Fresh" class="anchor"></a><code><span>| </span><span><span class="constructor">Fresh</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-closed_flag"><a href="#type-closed_flag" class="anchor"></a><code><span><span class="keyword">and</span> closed_flag</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag">Astlib.Ast_500.Asttypes.closed_flag</a></span><span> = </span></code><ol><li id="type-closed_flag.Closed" class="def variant constructor anchored"><a href="#type-closed_flag.Closed" class="anchor"></a><code><span>| </span><span><span class="constructor">Closed</span></span></code></li><li id="type-closed_flag.Open" class="def variant constructor anchored"><a href="#type-closed_flag.Open" class="anchor"></a><code><span>| </span><span><span class="constructor">Open</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label"><a href="#type-label" class="anchor"></a><code><span><span class="keyword">and</span> label</span><span> = string</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-arg_label"><a href="#type-arg_label" class="anchor"></a><code><span><span class="keyword">and</span> arg_label</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label">Astlib.Ast_500.Asttypes.arg_label</a></span><span> = </span></code><ol><li id="type-arg_label.Nolabel" class="def variant constructor anchored"><a href="#type-arg_label.Nolabel" class="anchor"></a><code><span>| </span><span><span class="constructor">Nolabel</span></span></code></li><li id="type-arg_label.Labelled" class="def variant constructor anchored"><a href="#type-arg_label.Labelled" class="anchor"></a><code><span>| </span><span><span class="constructor">Labelled</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>label:T -&gt; ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-arg_label.Optional" class="def variant constructor anchored"><a href="#type-arg_label.Optional" class="anchor"></a><code><span>| </span><span><span class="constructor">Optional</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>?label:T -&gt; ...</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-variance"><a href="#type-variance" class="anchor"></a><code><span><span class="keyword">and</span> variance</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-variance">Astlib.Ast_500.Asttypes.variance</a></span><span> = </span></code><ol><li id="type-variance.Covariant" class="def variant constructor anchored"><a href="#type-variance.Covariant" class="anchor"></a><code><span>| </span><span><span class="constructor">Covariant</span></span></code></li><li id="type-variance.Contravariant" class="def variant constructor anchored"><a href="#type-variance.Contravariant" class="anchor"></a><code><span>| </span><span><span class="constructor">Contravariant</span></span></code></li><li id="type-variance.NoVariance" class="def variant constructor anchored"><a href="#type-variance.NoVariance" class="anchor"></a><code><span>| </span><span><span class="constructor">NoVariance</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-injectivity"><a href="#type-injectivity" class="anchor"></a><code><span><span class="keyword">and</span> injectivity</span><span> = <a href="../Astlib/Ast_500/Asttypes/index.html#type-injectivity">Astlib.Ast_500.Asttypes.injectivity</a></span><span> = </span></code><ol><li id="type-injectivity.Injective" class="def variant constructor anchored"><a href="#type-injectivity.Injective" class="anchor"></a><code><span>| </span><span><span class="constructor">Injective</span></span></code></li><li id="type-injectivity.NoInjectivity" class="def variant constructor anchored"><a href="#type-injectivity.NoInjectivity" class="anchor"></a><code><span>| </span><span><span class="constructor">NoInjectivity</span></span></code></li></ol></div></div><p>Abstract syntax tree produced by parsing</p><div class="odoc-spec"><div class="spec type anchored" id="type-constant"><a href="#type-constant" class="anchor"></a><code><span><span class="keyword">and</span> constant</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-constant">Astlib.Ast_500.Parsetree.constant</a></span><span> = </span></code><ol><li id="type-constant.Pconst_integer" class="def variant constructor anchored"><a href="#type-constant.Pconst_integer" class="anchor"></a><code><span>| </span><span><span class="constructor">Pconst_integer</span> <span class="keyword">of</span> string * <span>char option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Integer constants such as <code>3</code> <code>3l</code> <code>3L</code> <code>3n</code>.</p><p>Suffixes <code>[g-z][G-Z]</code> are accepted by the parser. Suffixes except <code>'l'</code>, <code>'L'</code> and <code>'n'</code> are rejected by the typechecker</p><span class="comment-delim">*)</span></div></li><li id="type-constant.Pconst_char" class="def variant constructor anchored"><a href="#type-constant.Pconst_char" class="anchor"></a><code><span>| </span><span><span class="constructor">Pconst_char</span> <span class="keyword">of</span> char</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Character such as <code>'c'</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-constant.Pconst_string" class="def variant constructor anchored"><a href="#type-constant.Pconst_string" class="anchor"></a><code><span>| </span><span><span class="constructor">Pconst_string</span> <span class="keyword">of</span> string * <a href="#type-location">location</a> * <span>string option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Constant string such as <code>&quot;constant&quot;</code> or <code>{delim|other constant|delim}</code>.</p><p>The location span the content of the string, without the delimiters.</p><span class="comment-delim">*)</span></div></li><li id="type-constant.Pconst_float" class="def variant constructor anchored"><a href="#type-constant.Pconst_float" class="anchor"></a><code><span>| </span><span><span class="constructor">Pconst_float</span> <span class="keyword">of</span> string * <span>char option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Float constant such as <code>3.4</code>, <code>2e5</code> or <code>1.4e-4</code>.</p><p>Suffixes <code>g-z</code><code>G-Z</code> are accepted by the parser. Suffixes are rejected by the typechecker.</p><span class="comment-delim">*)</span></div></li></ol></div></div><h2 id="extension-points"><a href="#extension-points" class="anchor"></a>Extension points</h2><div class="odoc-spec"><div class="spec type anchored" id="type-attribute"><a href="#type-attribute" class="anchor"></a><code><span><span class="keyword">and</span> attribute</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-attribute">Astlib.Ast_500.Parsetree.attribute</a></span><span> = </span><span>{</span></code><ol><li id="type-attribute.attr_name" class="def record field anchored"><a href="#type-attribute.attr_name" class="anchor"></a><code><span>attr_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-attribute.attr_payload" class="def record field anchored"><a href="#type-attribute.attr_payload" class="anchor"></a><code><span>attr_payload : <a href="#type-payload">payload</a>;</span></code></li><li id="type-attribute.attr_loc" class="def record field anchored"><a href="#type-attribute.attr_loc" class="anchor"></a><code><span>attr_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Attributes such as <code>[@id ARG]</code> and <code>[@@id ARG]</code>.</p><p>Metadata containers passed around within the AST. The compiler ignores unknown attributes.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extension"><a href="#type-extension" class="anchor"></a><code><span><span class="keyword">and</span> extension</span><span> = <span>string <a href="#type-loc">loc</a></span> * <a href="#type-payload">payload</a></span></code></div><div class="spec-doc"><p>Extension points such as <code>[%id ARG] and [%%id ARG]</code>.</p><p>Sub-language placeholder -- rejected by the typechecker.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-attributes"><a href="#type-attributes" class="anchor"></a><code><span><span class="keyword">and</span> attributes</span><span> = <span><a href="#type-attribute">attribute</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-payload"><a href="#type-payload" class="anchor"></a><code><span><span class="keyword">and</span> payload</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-payload">Astlib.Ast_500.Parsetree.payload</a></span><span> = </span></code><ol><li id="type-payload.PStr" class="def variant constructor anchored"><a href="#type-payload.PStr" class="anchor"></a><code><span>| </span><span><span class="constructor">PStr</span> <span class="keyword">of</span> <a href="#type-structure">structure</a></span></code></li><li id="type-payload.PSig" class="def variant constructor anchored"><a href="#type-payload.PSig" class="anchor"></a><code><span>| </span><span><span class="constructor">PSig</span> <span class="keyword">of</span> <a href="#type-signature">signature</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>: SIG</code> in an attribute or an extension point</p><span class="comment-delim">*)</span></div></li><li id="type-payload.PTyp" class="def variant constructor anchored"><a href="#type-payload.PTyp" class="anchor"></a><code><span>| </span><span><span class="constructor">PTyp</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>: T</code> in an attribute or an extension point</p><span class="comment-delim">*)</span></div></li><li id="type-payload.PPat" class="def variant constructor anchored"><a href="#type-payload.PPat" class="anchor"></a><code><span>| </span><span><span class="constructor">PPat</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a> * <span><a href="#type-expression">expression</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>? P</code> or <code>? P when E</code>, in an attribute or an extension point</p><span class="comment-delim">*)</span></div></li></ol></div></div><h2 id="core-language"><a href="#core-language" class="anchor"></a>Core language</h2><h3 id="type-expressions"><a href="#type-expressions" class="anchor"></a>Type expressions</h3><div class="odoc-spec"><div class="spec type anchored" id="type-core_type"><a href="#type-core_type" class="anchor"></a><code><span><span class="keyword">and</span> core_type</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a></span><span> = </span><span>{</span></code><ol><li id="type-core_type.ptyp_desc" class="def record field anchored"><a href="#type-core_type.ptyp_desc" class="anchor"></a><code><span>ptyp_desc : <a href="#type-core_type_desc">core_type_desc</a>;</span></code></li><li id="type-core_type.ptyp_loc" class="def record field anchored"><a href="#type-core_type.ptyp_loc" class="anchor"></a><code><span>ptyp_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-core_type.ptyp_loc_stack" class="def record field anchored"><a href="#type-core_type.ptyp_loc_stack" class="anchor"></a><code><span>ptyp_loc_stack : <a href="#type-location_stack">location_stack</a>;</span></code></li><li id="type-core_type.ptyp_attributes" class="def record field anchored"><a href="#type-core_type.ptyp_attributes" class="anchor"></a><code><span>ptyp_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-core_type_desc"><a href="#type-core_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> core_type_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type_desc">Astlib.Ast_500.Parsetree.core_type_desc</a></span><span> = </span></code><ol><li id="type-core_type_desc.Ptyp_any" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_any" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_any</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>_</code></p><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_var" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_var</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>A type variable such as <code>'a</code></p><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_arrow" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_arrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_arrow</span> <span class="keyword">of</span> <a href="#type-arg_label">arg_label</a> * <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_arrow(lbl, T1, T2)</code> represents:</p><ul><li><code>T1 -&gt; T2</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Nolabel"><code>Nolabel</code></a>,</li><li><code>~l:T1 -&gt; T2</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Labelled"><code>Labelled</code></a>,</li><li><code>?l:T1 -&gt; T2</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_tuple" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_tuple</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_tuple([T1 ; ... ; Tn])</code> represents a product type <code>T1 * ... * Tn</code>.</p><p>Invariant: <code>n &gt;= 2</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_constr" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_constr</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_constr(lident, l)</code> represents:</p><ul><li><code>tconstr</code> when <code>l=[]</code>,</li><li><code>T tconstr</code> when <code>l=[T]</code>,</li><li><code>(T1, ..., Tn) tconstr</code> when <code>l=[T1 ; ... ; Tn]</code>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_object" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_object" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_object</span> <span class="keyword">of</span> <span><a href="#type-object_field">object_field</a> list</span> * <a href="#type-closed_flag">closed_flag</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_object([ l1:T1; ...; ln:Tn ], flag)</code> represents:</p><ul><li><code>&lt; l1:T1; ...; ln:Tn &gt;</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Closed"><code>Closed</code></a>,</li><li><code>&lt; l1:T1; ...; ln:Tn; .. &gt;</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Open"><code>Open</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_class" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_class</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_class(tconstr, l)</code> represents:</p><ul><li><code>#tconstr</code> when <code>l=[]</code>,</li><li><code>T #tconstr</code> when <code>l=[T]</code>,</li><li><code>(T1, ..., Tn) #tconstr</code> when <code>l=[T1 ; ... ; Tn]</code>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_alias" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_alias</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>T as 'a</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_variant" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_variant</span> <span class="keyword">of</span> <span><a href="#type-row_field">row_field</a> list</span> * <a href="#type-closed_flag">closed_flag</a> * <span><span><a href="#type-label">label</a> list</span> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ptyp_variant([`A;`B], flag, labels)</code> represents:</p><ul><li><code>[ `A|`B ]</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Closed"><code>Closed</code></a>, and <code>labels</code> is <code>None</code>,</li><li><code>[&gt; `A|`B ]</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Open"><code>Open</code></a>, and <code>labels</code> is <code>None</code>,</li><li><code>[&lt; `A|`B ]</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Closed"><code>Closed</code></a>, and <code>labels</code> is <code>Some []</code>,</li><li><code>[&lt; `A|`B &gt; `X `Y ]</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Closed"><code>Closed</code></a>, and <code>labels</code> is <code>Some [&quot;X&quot;;&quot;Y&quot;]</code>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_poly" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_poly" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_poly</span> <span class="keyword">of</span> <span><span>string <a href="#type-loc">loc</a></span> list</span> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>'a1 ... 'an. T</code></p><p>Can only appear in the following context:</p><ul><li>As the <a href="#type-core_type"><code>core_type</code></a> of a <a href="#type-pattern_desc.Ppat_constraint"><code>Ppat_constraint</code></a> node corresponding to a constraint on a let-binding:</li></ul><pre class="language-ocaml"><code>let x : 'a1 ... 'an. T = e ...</code></pre><ul><li>Under <a href="#type-class_field_kind.Cfk_virtual"><code>Cfk_virtual</code></a> for methods (not values).</li></ul><ul><li>As the <a href="#type-core_type"><code>core_type</code></a> of a <a href="#type-class_type_field_desc.Pctf_method"><code>Pctf_method</code></a> node.</li></ul><ul><li>As the <a href="#type-core_type"><code>core_type</code></a> of a <a href="#type-expression_desc.Pexp_poly"><code>Pexp_poly</code></a> node.</li></ul><ul><li>As the <a href="#type-label_declaration.pld_type"><code>pld_type</code></a> field of a <a href="#type-label_declaration"><code>label_declaration</code></a>.</li></ul><ul><li>As a <a href="#type-core_type"><code>core_type</code></a> of a <a href="#type-core_type_desc.Ptyp_object"><code>Ptyp_object</code></a> node.</li></ul><ul><li>As the <a href="#type-value_description.pval_type"><code>pval_type</code></a> field of a <a href="#type-value_description"><code>value_description</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_package" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_package" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_package</span> <span class="keyword">of</span> <a href="#type-package_type">package_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(module S)</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-core_type_desc.Ptyp_extension" class="def variant constructor anchored"><a href="#type-core_type_desc.Ptyp_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptyp_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%id]</code>.</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-package_type"><a href="#type-package_type" class="anchor"></a><code><span><span class="keyword">and</span> package_type</span><span> = <a href="#type-longident_loc">longident_loc</a> * <span><span>(<a href="#type-longident_loc">longident_loc</a> * <a href="#type-core_type">core_type</a>)</span> list</span></span></code></div><div class="spec-doc"><p>As <a href="#type-package_type"><code>package_type</code></a> typed values:</p><ul><li><code>(S, [])</code> represents <code>(module S)</code>,</li><li><code>(S, [(t1, T1) ; ... ; (tn, Tn)])</code> represents <code>(module S with type t1 = T1 and ... and tn = Tn)</code>.</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_field"><a href="#type-row_field" class="anchor"></a><code><span><span class="keyword">and</span> row_field</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-row_field">Astlib.Ast_500.Parsetree.row_field</a></span><span> = </span><span>{</span></code><ol><li id="type-row_field.prf_desc" class="def record field anchored"><a href="#type-row_field.prf_desc" class="anchor"></a><code><span>prf_desc : <a href="#type-row_field_desc">row_field_desc</a>;</span></code></li><li id="type-row_field.prf_loc" class="def record field anchored"><a href="#type-row_field.prf_loc" class="anchor"></a><code><span>prf_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-row_field.prf_attributes" class="def record field anchored"><a href="#type-row_field.prf_attributes" class="anchor"></a><code><span>prf_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-row_field_desc"><a href="#type-row_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> row_field_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-row_field_desc">Astlib.Ast_500.Parsetree.row_field_desc</a></span><span> = </span></code><ol><li id="type-row_field_desc.Rtag" class="def variant constructor anchored"><a href="#type-row_field_desc.Rtag" class="anchor"></a><code><span>| </span><span><span class="constructor">Rtag</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * bool * <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Rtag(`A, b, l)</code> represents:</p><ul><li><code>`A</code> when <code>b</code> is <code>true</code> and <code>l</code> is <code>[]</code>,</li><li><code>`A of T</code> when <code>b</code> is <code>false</code> and <code>l</code> is <code>[T]</code>,</li><li><code>`A of T1 &amp; .. &amp; Tn</code> when <code>b</code> is <code>false</code> and <code>l</code> is <code>[T1;...Tn]</code>,</li><li><code>`A of &amp; T1 &amp; .. &amp; Tn</code> when <code>b</code> is <code>true</code> and <code>l</code> is <code>[T1;...Tn]</code>.</li></ul><ul><li>The <code>bool</code> field is true if the tag contains a constant (empty) constructor.</li><li><code>&amp;</code> occurs when several types are used for the same constructor (see 4.2 in the manual)</li></ul><span class="comment-delim">*)</span></div></li><li id="type-row_field_desc.Rinherit" class="def variant constructor anchored"><a href="#type-row_field_desc.Rinherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Rinherit</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[ | t ]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-object_field"><a href="#type-object_field" class="anchor"></a><code><span><span class="keyword">and</span> object_field</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-object_field">Astlib.Ast_500.Parsetree.object_field</a></span><span> = </span><span>{</span></code><ol><li id="type-object_field.pof_desc" class="def record field anchored"><a href="#type-object_field.pof_desc" class="anchor"></a><code><span>pof_desc : <a href="#type-object_field_desc">object_field_desc</a>;</span></code></li><li id="type-object_field.pof_loc" class="def record field anchored"><a href="#type-object_field.pof_loc" class="anchor"></a><code><span>pof_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-object_field.pof_attributes" class="def record field anchored"><a href="#type-object_field.pof_attributes" class="anchor"></a><code><span>pof_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-object_field_desc"><a href="#type-object_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> object_field_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-object_field_desc">Astlib.Ast_500.Parsetree.object_field_desc</a></span><span> = </span></code><ol><li id="type-object_field_desc.Otag" class="def variant constructor anchored"><a href="#type-object_field_desc.Otag" class="anchor"></a><code><span>| </span><span><span class="constructor">Otag</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-core_type">core_type</a></span></code></li><li id="type-object_field_desc.Oinherit" class="def variant constructor anchored"><a href="#type-object_field_desc.Oinherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Oinherit</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code></li></ol></div></div><h3 id="patterns"><a href="#patterns" class="anchor"></a>Patterns</h3><div class="odoc-spec"><div class="spec type anchored" id="type-pattern"><a href="#type-pattern" class="anchor"></a><code><span><span class="keyword">and</span> pattern</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-pattern">Astlib.Ast_500.Parsetree.pattern</a></span><span> = </span><span>{</span></code><ol><li id="type-pattern.ppat_desc" class="def record field anchored"><a href="#type-pattern.ppat_desc" class="anchor"></a><code><span>ppat_desc : <a href="#type-pattern_desc">pattern_desc</a>;</span></code></li><li id="type-pattern.ppat_loc" class="def record field anchored"><a href="#type-pattern.ppat_loc" class="anchor"></a><code><span>ppat_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-pattern.ppat_loc_stack" class="def record field anchored"><a href="#type-pattern.ppat_loc_stack" class="anchor"></a><code><span>ppat_loc_stack : <a href="#type-location_stack">location_stack</a>;</span></code></li><li id="type-pattern.ppat_attributes" class="def record field anchored"><a href="#type-pattern.ppat_attributes" class="anchor"></a><code><span>ppat_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-pattern_desc"><a href="#type-pattern_desc" class="anchor"></a><code><span><span class="keyword">and</span> pattern_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-pattern_desc">Astlib.Ast_500.Parsetree.pattern_desc</a></span><span> = </span></code><ol><li id="type-pattern_desc.Ppat_any" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_any" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_any</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The pattern <code>_</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_var" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_var</span> <span class="keyword">of</span> <span>string <a href="#type-loc">loc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>A variable pattern such as <code>x</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_alias" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_alias</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a> * <span>string <a href="#type-loc">loc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>An alias pattern such as <code>P as 'a</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_constant" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_constant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_constant</span> <span class="keyword">of</span> <a href="#type-constant">constant</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Patterns such as <code>1</code>, <code>'a'</code>, <code>&quot;true&quot;</code>, <code>1.0</code>, <code>1l</code>, <code>1L</code>, <code>1n</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_interval" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_interval" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_interval</span> <span class="keyword">of</span> <a href="#type-constant">constant</a> * <a href="#type-constant">constant</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Patterns such as <code>'a'..'z'</code>.</p><p>Other forms of interval are recognized by the parser but rejected by the type-checker.</p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_tuple" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_tuple</span> <span class="keyword">of</span> <span><a href="#type-pattern">pattern</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Patterns <code>(P1, ..., Pn)</code>.</p><p>Invariant: <code>n &gt;= 2</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_construct" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_construct" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_construct</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><span>(<span><span>string <a href="#type-loc">loc</a></span> list</span> * <a href="#type-pattern">pattern</a>)</span> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ppat_construct(C, args)</code> represents:</p><ul><li><code>C</code> when <code>args</code> is <code>None</code>,</li><li><code>C P</code> when <code>args</code> is <code>Some ([], P)</code></li><li><code>C (P1, ..., Pn)</code> when <code>args</code> is <code>Some ([], Ppat_tuple [P1; ...; Pn])</code></li><li><code>C (type a b) P</code> when <code>args</code> is <code>Some ([a; b], P)</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_variant" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_variant</span> <span class="keyword">of</span> <a href="#type-label">label</a> * <span><a href="#type-pattern">pattern</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ppat_variant(`A, pat)</code> represents:</p><ul><li><code>`A</code> when <code>pat</code> is <code>None</code>,</li><li><code>`A P</code> when <code>pat</code> is <code>Some P</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_record" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_record</span> <span class="keyword">of</span> <span><span>(<a href="#type-longident_loc">longident_loc</a> * <a href="#type-pattern">pattern</a>)</span> list</span> * <a href="#type-closed_flag">closed_flag</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag)</code> represents:</p><ul><li><code>{ l1=P1; ...; ln=Pn }</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Closed"><code>Closed</code></a></li><li><code>{ l1=P1; ...; ln=Pn; _}</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-closed_flag.Open"><code>Open</code></a></li></ul><p>Invariant: <code>n &gt; 0</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_array" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_array</span> <span class="keyword">of</span> <span><a href="#type-pattern">pattern</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>[| P1; ...; Pn |]</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_or" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_or" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_or</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a> * <a href="#type-pattern">pattern</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>P1 | P2</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_constraint" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_constraint</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>(P : T)</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_type" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_type</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>#tconst</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_lazy" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_lazy" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_lazy</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>lazy P</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_unpack" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_unpack" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_unpack</span> <span class="keyword">of</span> <span><span>string option</span> <a href="#type-loc">loc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Ppat_unpack(s)</code> represents:</p><ul><li><code>(module P)</code> when <code>s</code> is <code>Some &quot;P&quot;</code></li><li><code>(module _)</code> when <code>s</code> is <code>None</code></li></ul><p>Note: <code>(module P : S)</code> is represented as <code>Ppat_constraint(Ppat_unpack(Some &quot;P&quot;), Ptyp_package S)</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_exception" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_exception</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>exception P</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_extension" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>[%id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-pattern_desc.Ppat_open" class="def variant constructor anchored"><a href="#type-pattern_desc.Ppat_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Ppat_open</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-pattern">pattern</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Pattern <code>M.(P)</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><h3 id="value-expressions"><a href="#value-expressions" class="anchor"></a>Value expressions</h3><div class="odoc-spec"><div class="spec type anchored" id="type-expression"><a href="#type-expression" class="anchor"></a><code><span><span class="keyword">and</span> expression</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-expression">Astlib.Ast_500.Parsetree.expression</a></span><span> = </span><span>{</span></code><ol><li id="type-expression.pexp_desc" class="def record field anchored"><a href="#type-expression.pexp_desc" class="anchor"></a><code><span>pexp_desc : <a href="#type-expression_desc">expression_desc</a>;</span></code></li><li id="type-expression.pexp_loc" class="def record field anchored"><a href="#type-expression.pexp_loc" class="anchor"></a><code><span>pexp_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-expression.pexp_loc_stack" class="def record field anchored"><a href="#type-expression.pexp_loc_stack" class="anchor"></a><code><span>pexp_loc_stack : <a href="#type-location_stack">location_stack</a>;</span></code></li><li id="type-expression.pexp_attributes" class="def record field anchored"><a href="#type-expression.pexp_attributes" class="anchor"></a><code><span>pexp_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-expression_desc"><a href="#type-expression_desc" class="anchor"></a><code><span><span class="keyword">and</span> expression_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-expression_desc">Astlib.Ast_500.Parsetree.expression_desc</a></span><span> = </span></code><ol><li id="type-expression_desc.Pexp_ident" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_ident</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Identifiers such as <code>x</code> and <code>M.x</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_constant" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_constant" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_constant</span> <span class="keyword">of</span> <a href="#type-constant">constant</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Expressions constant such as <code>1</code>, <code>'a'</code>, <code>&quot;true&quot;</code>, <code>1.0</code>, <code>1l</code>, <code>1L</code>, <code>1n</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_let" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_let" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_let</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a> * <span><a href="#type-value_binding">value_binding</a> list</span> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E)</code> represents:</p><ul><li><code>let P1 = E1 and ... and Pn = EN in E</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Nonrecursive"><code>Nonrecursive</code></a>,</li><li><code>let rec P1 = E1 and ... and Pn = EN in E</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Recursive"><code>Recursive</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_function" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_function" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_function</span> <span class="keyword">of</span> <a href="#type-cases">cases</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>function P1 -&gt; E1 | ... | Pn -&gt; En</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_fun" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_fun" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_fun</span> <span class="keyword">of</span> <a href="#type-arg_label">arg_label</a> * <span><a href="#type-expression">expression</a> option</span> * <a href="#type-pattern">pattern</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_fun(lbl, exp0, P, E1)</code> represents:</p><ul><li><code>fun P -&gt; E1</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Nolabel"><code>Nolabel</code></a> and <code>exp0</code> is <code>None</code></li><li><code>fun ~l:P -&gt; E1</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Labelled"><code>Labelled l</code></a> and <code>exp0</code> is <code>None</code></li><li><code>fun ?l:P -&gt; E1</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional l</code></a> and <code>exp0</code> is <code>None</code></li><li><code>fun ?l:(P = E0) -&gt; E1</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional l</code></a> and <code>exp0</code> is <code>Some E0</code></li></ul><p>Notes:</p><ul><li>If <code>E0</code> is provided, only <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional</code></a> is allowed.</li><li><code>fun P1 P2 .. Pn -&gt; E1</code> is represented as nested <a href="#type-expression_desc.Pexp_fun"><code>Pexp_fun</code></a>.</li><li><code>let f P = E</code> is represented using <a href="#type-expression_desc.Pexp_fun"><code>Pexp_fun</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_apply" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_apply</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><span>(<a href="#type-arg_label">arg_label</a> * <a href="#type-expression">expression</a>)</span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])</code> represents <code>E0 ~l1:E1 ... ~ln:En</code></p><p><code>li</code> can be <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Nolabel"><code>Nolabel</code></a> (non labeled argument), <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Labelled"><code>Labelled</code></a> (labelled arguments) or <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional</code></a> (optional argument).</p><p>Invariant: <code>n &gt; 0</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_match" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_match" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_match</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-cases">cases</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>match E0 with P1 -&gt; E1 | ... | Pn -&gt; En</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_try" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_try" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_try</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-cases">cases</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>try E0 with P1 -&gt; E1 | ... | Pn -&gt; En</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_tuple" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_tuple</span> <span class="keyword">of</span> <span><a href="#type-expression">expression</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Expressions <code>(E1, ..., En)</code></p><p>Invariant: <code>n &gt;= 2</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_construct" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_construct" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_construct</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><a href="#type-expression">expression</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_construct(C, exp)</code> represents:</p><ul><li><code>C</code> when <code>exp</code> is <code>None</code>,</li><li><code>C E</code> when <code>exp</code> is <code>Some E</code>,</li><li><code>C (E1, ..., En)</code> when <code>exp</code> is <code>Some (Pexp_tuple[E1;...;En])</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_variant" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_variant</span> <span class="keyword">of</span> <a href="#type-label">label</a> * <span><a href="#type-expression">expression</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_variant(`A, exp)</code> represents</p><ul><li><code>`A</code> when <code>exp</code> is <code>None</code></li><li><code>`A E</code> when <code>exp</code> is <code>Some E</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_record" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_record</span> <span class="keyword">of</span> <span><span>(<a href="#type-longident_loc">longident_loc</a> * <a href="#type-expression">expression</a>)</span> list</span> * <span><a href="#type-expression">expression</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0)</code> represents</p><ul><li><code>{ l1=P1; ...; ln=Pn }</code> when <code>exp0</code> is <code>None</code></li><li><code>{ E0 with l1=P1; ...; ln=Pn }</code> when <code>exp0</code> is <code>Some E0</code></li></ul><p>Invariant: <code>n &gt; 0</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_field" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_field" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_field</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>E.l</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_setfield" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_setfield" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_setfield</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-longident_loc">longident_loc</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>E1.l &lt;- E2</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_array" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_array</span> <span class="keyword">of</span> <span><a href="#type-expression">expression</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[| E1; ...; En |]</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_ifthenelse" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_ifthenelse" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_ifthenelse</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a> * <span><a href="#type-expression">expression</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>if E1 then E2 else E3</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_sequence" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_sequence" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_sequence</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>E1; E2</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_while" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_while" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_while</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>while E1 do E2 done</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_for" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_for" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_for</span> <span class="keyword">of</span> <a href="#type-pattern">pattern</a> * <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a> * <a href="#type-direction_flag">direction_flag</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_for(i, E1, E2, direction, E3)</code> represents:</p><ul><li><code>for i = E1 to E2 do E3 done</code> when <code>direction</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-direction_flag.Upto"><code>Upto</code></a></li><li><code>for i = E1 downto E2 do E3 done</code> when <code>direction</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-direction_flag.Downto"><code>Downto</code></a></li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_constraint" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_constraint</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(E : T)</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_coerce" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_coerce" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_coerce</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><a href="#type-core_type">core_type</a> option</span> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pexp_coerce(E, from, T)</code> represents</p><ul><li><code>(E :&gt; T)</code> when <code>from</code> is <code>None</code>,</li><li><code>(E : T0 :&gt; T)</code> when <code>from</code> is <code>Some T0</code>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_send" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_send" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_send</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>E # m</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_new" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_new" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_new</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>new M.c</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_setinstvar" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_setinstvar" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_setinstvar</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>x &lt;- 2</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_override" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_override" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_override</span> <span class="keyword">of</span> <span><span>(<span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-expression">expression</a>)</span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>{&lt; x1 = E1; ...; xn = En &gt;}</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_letmodule" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_letmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_letmodule</span> <span class="keyword">of</span> <span><span>string option</span> <a href="#type-loc">loc</a></span> * <a href="#type-module_expr">module_expr</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>let module M = ME in E</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_letexception" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_letexception" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_letexception</span> <span class="keyword">of</span> <a href="#type-extension_constructor">extension_constructor</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>let exception C in E</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_assert" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_assert" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_assert</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>assert E</code>.</p><p>Note: <code>assert false</code> is treated in a special way by the type-checker.</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_lazy" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_lazy" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_lazy</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>lazy E</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_poly" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_poly" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_poly</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <span><a href="#type-core_type">core_type</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Used for method bodies.</p><p>Can only be used as the expression under <a href="#type-class_field_kind.Cfk_concrete"><code>Cfk_concrete</code></a> for methods (not values).</p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_object" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_object" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_object</span> <span class="keyword">of</span> <a href="#type-class_structure">class_structure</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>object ... end</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_newtype" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_newtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_newtype</span> <span class="keyword">of</span> <span>string <a href="#type-loc">loc</a></span> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>fun (type t) -&gt; E</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_pack" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_pack" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_pack</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(module ME)</code>.</p><p><code>(module ME : S)</code> is represented as <code>Pexp_constraint(Pexp_pack ME, Ptyp_package S)</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_open" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_open</span> <span class="keyword">of</span> <a href="#type-open_declaration">open_declaration</a> * <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>M.(E)</code></li><li><code>let open M in E</code></li><li><code>let open! M in E</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_letop" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_letop" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_letop</span> <span class="keyword">of</span> <a href="#type-letop">letop</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>let* P = E0 in E1</code></li><li><code>let* P0 = E00 and* P1 = E01 in E1</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_extension" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-expression_desc.Pexp_unreachable" class="def variant constructor anchored"><a href="#type-expression_desc.Pexp_unreachable" class="anchor"></a><code><span>| </span><span><span class="constructor">Pexp_unreachable</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>.</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-case"><a href="#type-case" class="anchor"></a><code><span><span class="keyword">and</span> case</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-case">Astlib.Ast_500.Parsetree.case</a></span><span> = </span><span>{</span></code><ol><li id="type-case.pc_lhs" class="def record field anchored"><a href="#type-case.pc_lhs" class="anchor"></a><code><span>pc_lhs : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-case.pc_guard" class="def record field anchored"><a href="#type-case.pc_guard" class="anchor"></a><code><span>pc_guard : <span><a href="#type-expression">expression</a> option</span>;</span></code></li><li id="type-case.pc_rhs" class="def record field anchored"><a href="#type-case.pc_rhs" class="anchor"></a><code><span>pc_rhs : <a href="#type-expression">expression</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <a href="#type-case"><code>case</code></a> represents <code>(P -&gt; E)</code> or <code>(P when E0 -&gt; E)</code></p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-letop"><a href="#type-letop" class="anchor"></a><code><span><span class="keyword">and</span> letop</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-letop">Astlib.Ast_500.Parsetree.letop</a></span><span> = </span><span>{</span></code><ol><li id="type-letop.let_" class="def record field anchored"><a href="#type-letop.let_" class="anchor"></a><code><span>let_ : <a href="#type-binding_op">binding_op</a>;</span></code></li><li id="type-letop.ands" class="def record field anchored"><a href="#type-letop.ands" class="anchor"></a><code><span>ands : <span><a href="#type-binding_op">binding_op</a> list</span>;</span></code></li><li id="type-letop.body" class="def record field anchored"><a href="#type-letop.body" class="anchor"></a><code><span>body : <a href="#type-expression">expression</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-binding_op"><a href="#type-binding_op" class="anchor"></a><code><span><span class="keyword">and</span> binding_op</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-binding_op">Astlib.Ast_500.Parsetree.binding_op</a></span><span> = </span><span>{</span></code><ol><li id="type-binding_op.pbop_op" class="def record field anchored"><a href="#type-binding_op.pbop_op" class="anchor"></a><code><span>pbop_op : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-binding_op.pbop_pat" class="def record field anchored"><a href="#type-binding_op.pbop_pat" class="anchor"></a><code><span>pbop_pat : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-binding_op.pbop_exp" class="def record field anchored"><a href="#type-binding_op.pbop_exp" class="anchor"></a><code><span>pbop_exp : <a href="#type-expression">expression</a>;</span></code></li><li id="type-binding_op.pbop_loc" class="def record field anchored"><a href="#type-binding_op.pbop_loc" class="anchor"></a><code><span>pbop_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><h3 id="value-descriptions"><a href="#value-descriptions" class="anchor"></a>Value descriptions</h3><div class="odoc-spec"><div class="spec type anchored" id="type-value_description"><a href="#type-value_description" class="anchor"></a><code><span><span class="keyword">and</span> value_description</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-value_description">Astlib.Ast_500.Parsetree.value_description</a></span><span> = </span><span>{</span></code><ol><li id="type-value_description.pval_name" class="def record field anchored"><a href="#type-value_description.pval_name" class="anchor"></a><code><span>pval_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-value_description.pval_type" class="def record field anchored"><a href="#type-value_description.pval_type" class="anchor"></a><code><span>pval_type : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-value_description.pval_prim" class="def record field anchored"><a href="#type-value_description.pval_prim" class="anchor"></a><code><span>pval_prim : <span>string list</span>;</span></code></li><li id="type-value_description.pval_attributes" class="def record field anchored"><a href="#type-value_description.pval_attributes" class="anchor"></a><code><span>pval_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li><li id="type-value_description.pval_loc" class="def record field anchored"><a href="#type-value_description.pval_loc" class="anchor"></a><code><span>pval_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <a href="#type-value_description"><code>value_description</code></a> represents:</p><ul><li><code>val x: T</code>, when <a href="#type-value_description.pval_prim"><code>pval_prim</code></a> is <code>[]</code></li><li><code>external x: T = &quot;s1&quot; ... &quot;sn&quot;</code> when <a href="#type-value_description.pval_prim"><code>pval_prim</code></a> is <code>[&quot;s1&quot;;...&quot;sn&quot;]</code></li></ul></div></div><h3 id="type-declarations"><a href="#type-declarations" class="anchor"></a>Type declarations</h3><div class="odoc-spec"><div class="spec type anchored" id="type-type_declaration"><a href="#type-type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> type_declaration</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-type_declaration">Astlib.Ast_500.Parsetree.type_declaration</a></span><span> = </span><span>{</span></code><ol><li id="type-type_declaration.ptype_name" class="def record field anchored"><a href="#type-type_declaration.ptype_name" class="anchor"></a><code><span>ptype_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-type_declaration.ptype_params" class="def record field anchored"><a href="#type-type_declaration.ptype_params" class="anchor"></a><code><span>ptype_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="#type-variance">variance</a> * <a href="#type-injectivity">injectivity</a>)</span>)</span> list</span>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>('a1,...'an) t</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_declaration.ptype_cstrs" class="def record field anchored"><a href="#type-type_declaration.ptype_cstrs" class="anchor"></a><code><span>ptype_cstrs : <span><span>(<a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a> * <a href="#type-location">location</a>)</span> list</span>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... constraint T1=T1' ... constraint Tn=Tn'</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_declaration.ptype_kind" class="def record field anchored"><a href="#type-type_declaration.ptype_kind" class="anchor"></a><code><span>ptype_kind : <a href="#type-type_kind">type_kind</a>;</span></code></li><li id="type-type_declaration.ptype_private" class="def record field anchored"><a href="#type-type_declaration.ptype_private" class="anchor"></a><code><span>ptype_private : <a href="#type-private_flag">private_flag</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>for <code>= private ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_declaration.ptype_manifest" class="def record field anchored"><a href="#type-type_declaration.ptype_manifest" class="anchor"></a><code><span>ptype_manifest : <span><a href="#type-core_type">core_type</a> option</span>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>represents <code>= T</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_declaration.ptype_attributes" class="def record field anchored"><a href="#type-type_declaration.ptype_attributes" class="anchor"></a><code><span>ptype_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li><li id="type-type_declaration.ptype_loc" class="def record field anchored"><a href="#type-type_declaration.ptype_loc" class="anchor"></a><code><span>ptype_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Here are type declarations and their representation, for various <a href="#type-type_declaration.ptype_kind"><code>ptype_kind</code></a> and <a href="#type-type_declaration.ptype_manifest"><code>ptype_manifest</code></a> values:</p><ul><li><code>type t</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_abstract"><code>Ptype_abstract</code></a>, and <code>manifest</code> is <code>None</code>,</li><li><code>type t = T0</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_abstract"><code>Ptype_abstract</code></a>, and <code>manifest</code> is <code>Some T0</code>,</li><li><code>type t = C of T | ...</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_variant"><code>Ptype_variant</code></a>, and <code>manifest</code> is <code>None</code>,</li><li><code>type t = T0 = C of T | ...</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_variant"><code>Ptype_variant</code></a>, and <code>manifest</code> is <code>Some T0</code>,</li><li><code>type t = {l: T; ...}</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_record"><code>Ptype_record</code></a>, and <code>manifest</code> is <code>None</code>,</li><li><code>type t = T0 = {l : T; ...}</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_record"><code>Ptype_record</code></a>, and <code>manifest</code> is <code>Some T0</code>,</li><li><code>type t = ..</code> when <code>type_kind</code> is <a href="#type-type_kind.Ptype_open"><code>Ptype_open</code></a>, and <code>manifest</code> is <code>None</code>.</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_kind"><a href="#type-type_kind" class="anchor"></a><code><span><span class="keyword">and</span> type_kind</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-type_kind">Astlib.Ast_500.Parsetree.type_kind</a></span><span> = </span></code><ol><li id="type-type_kind.Ptype_abstract" class="def variant constructor anchored"><a href="#type-type_kind.Ptype_abstract" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptype_abstract</span></span></code></li><li id="type-type_kind.Ptype_variant" class="def variant constructor anchored"><a href="#type-type_kind.Ptype_variant" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptype_variant</span> <span class="keyword">of</span> <span><a href="#type-constructor_declaration">constructor_declaration</a> list</span></span></code></li><li id="type-type_kind.Ptype_record" class="def variant constructor anchored"><a href="#type-type_kind.Ptype_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptype_record</span> <span class="keyword">of</span> <span><a href="#type-label_declaration">label_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Invariant: non-empty list</p><span class="comment-delim">*)</span></div></li><li id="type-type_kind.Ptype_open" class="def variant constructor anchored"><a href="#type-type_kind.Ptype_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptype_open</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label_declaration"><a href="#type-label_declaration" class="anchor"></a><code><span><span class="keyword">and</span> label_declaration</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-label_declaration">Astlib.Ast_500.Parsetree.label_declaration</a></span><span> = </span><span>{</span></code><ol><li id="type-label_declaration.pld_name" class="def record field anchored"><a href="#type-label_declaration.pld_name" class="anchor"></a><code><span>pld_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-label_declaration.pld_mutable" class="def record field anchored"><a href="#type-label_declaration.pld_mutable" class="anchor"></a><code><span>pld_mutable : <a href="#type-mutable_flag">mutable_flag</a>;</span></code></li><li id="type-label_declaration.pld_type" class="def record field anchored"><a href="#type-label_declaration.pld_type" class="anchor"></a><code><span>pld_type : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-label_declaration.pld_loc" class="def record field anchored"><a href="#type-label_declaration.pld_loc" class="anchor"></a><code><span>pld_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-label_declaration.pld_attributes" class="def record field anchored"><a href="#type-label_declaration.pld_attributes" class="anchor"></a><code><span>pld_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>l : T [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><ul><li><code>{ ...; l: T; ... }</code> when <a href="#type-label_declaration.pld_mutable"><code>pld_mutable</code></a> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Immutable"><code>Immutable</code></a>,</li><li><code>{ ...; mutable l: T; ... }</code> when <a href="#type-label_declaration.pld_mutable"><code>pld_mutable</code></a> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Mutable"><code>Mutable</code></a>.</li></ul><p>Note: <code>T</code> can be a <a href="#type-core_type_desc.Ptyp_poly"><code>Ptyp_poly</code></a>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_declaration"><a href="#type-constructor_declaration" class="anchor"></a><code><span><span class="keyword">and</span> constructor_declaration</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-constructor_declaration">Astlib.Ast_500.Parsetree.constructor_declaration</a></span><span> =
</span><span>{</span></code><ol><li id="type-constructor_declaration.pcd_name" class="def record field anchored"><a href="#type-constructor_declaration.pcd_name" class="anchor"></a><code><span>pcd_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-constructor_declaration.pcd_vars" class="def record field anchored"><a href="#type-constructor_declaration.pcd_vars" class="anchor"></a><code><span>pcd_vars : <span><span>string <a href="#type-loc">loc</a></span> list</span>;</span></code></li><li id="type-constructor_declaration.pcd_args" class="def record field anchored"><a href="#type-constructor_declaration.pcd_args" class="anchor"></a><code><span>pcd_args : <a href="#type-constructor_arguments">constructor_arguments</a>;</span></code></li><li id="type-constructor_declaration.pcd_res" class="def record field anchored"><a href="#type-constructor_declaration.pcd_res" class="anchor"></a><code><span>pcd_res : <span><a href="#type-core_type">core_type</a> option</span>;</span></code></li><li id="type-constructor_declaration.pcd_loc" class="def record field anchored"><a href="#type-constructor_declaration.pcd_loc" class="anchor"></a><code><span>pcd_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-constructor_declaration.pcd_attributes" class="def record field anchored"><a href="#type-constructor_declaration.pcd_attributes" class="anchor"></a><code><span>pcd_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>C of ... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-constructor_arguments"><a href="#type-constructor_arguments" class="anchor"></a><code><span><span class="keyword">and</span> constructor_arguments</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-constructor_arguments">Astlib.Ast_500.Parsetree.constructor_arguments</a></span><span> = </span></code><ol><li id="type-constructor_arguments.Pcstr_tuple" class="def variant constructor anchored"><a href="#type-constructor_arguments.Pcstr_tuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcstr_tuple</span> <span class="keyword">of</span> <span><a href="#type-core_type">core_type</a> list</span></span></code></li><li id="type-constructor_arguments.Pcstr_record" class="def variant constructor anchored"><a href="#type-constructor_arguments.Pcstr_record" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcstr_record</span> <span class="keyword">of</span> <span><a href="#type-label_declaration">label_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Values of type <a href="#type-constructor_declaration"><code>constructor_declaration</code></a> represents the constructor arguments of:</p><ul><li><code>C of T1 * ... * Tn</code> when <code>res = None</code>, and <code>args = Pcstr_tuple [T1; ... ; Tn]</code>,</li><li><code>C: T0</code> when <code>res = Some T0</code>, and <code>args = Pcstr_tuple []</code>,</li><li><code>C: T1 * ... * Tn -&gt; T0</code> when <code>res = Some T0</code>, and <code>args = Pcstr_tuple [T1; ... ; Tn]</code>,</li><li><code>C of {...}</code> when <code>res = None</code>, and <code>args = Pcstr_record [...]</code>,</li><li><code>C: {...} -&gt; T0</code> when <code>res = Some T0</code>, and <code>args = Pcstr_record [...]</code>.</li></ul><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_extension"><a href="#type-type_extension" class="anchor"></a><code><span><span class="keyword">and</span> type_extension</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-type_extension">Astlib.Ast_500.Parsetree.type_extension</a></span><span> = </span><span>{</span></code><ol><li id="type-type_extension.ptyext_path" class="def record field anchored"><a href="#type-type_extension.ptyext_path" class="anchor"></a><code><span>ptyext_path : <a href="#type-longident_loc">longident_loc</a>;</span></code></li><li id="type-type_extension.ptyext_params" class="def record field anchored"><a href="#type-type_extension.ptyext_params" class="anchor"></a><code><span>ptyext_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="#type-variance">variance</a> * <a href="#type-injectivity">injectivity</a>)</span>)</span> list</span>;</span></code></li><li id="type-type_extension.ptyext_constructors" class="def record field anchored"><a href="#type-type_extension.ptyext_constructors" class="anchor"></a><code><span>ptyext_constructors : <span><a href="#type-extension_constructor">extension_constructor</a> list</span>;</span></code></li><li id="type-type_extension.ptyext_private" class="def record field anchored"><a href="#type-type_extension.ptyext_private" class="anchor"></a><code><span>ptyext_private : <a href="#type-private_flag">private_flag</a>;</span></code></li><li id="type-type_extension.ptyext_loc" class="def record field anchored"><a href="#type-type_extension.ptyext_loc" class="anchor"></a><code><span>ptyext_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-type_extension.ptyext_attributes" class="def record field anchored"><a href="#type-type_extension.ptyext_attributes" class="anchor"></a><code><span>ptyext_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>... <code>@@id1</code> <code>@@id2</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Definition of new extensions constructors for the extensive sum type <code>t</code> (<code>type t += ...</code>).</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extension_constructor"><a href="#type-extension_constructor" class="anchor"></a><code><span><span class="keyword">and</span> extension_constructor</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-extension_constructor">Astlib.Ast_500.Parsetree.extension_constructor</a></span><span> = </span><span>{</span></code><ol><li id="type-extension_constructor.pext_name" class="def record field anchored"><a href="#type-extension_constructor.pext_name" class="anchor"></a><code><span>pext_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-extension_constructor.pext_kind" class="def record field anchored"><a href="#type-extension_constructor.pext_kind" class="anchor"></a><code><span>pext_kind : <a href="#type-extension_constructor_kind">extension_constructor_kind</a>;</span></code></li><li id="type-extension_constructor.pext_loc" class="def record field anchored"><a href="#type-extension_constructor.pext_loc" class="anchor"></a><code><span>pext_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-extension_constructor.pext_attributes" class="def record field anchored"><a href="#type-extension_constructor.pext_attributes" class="anchor"></a><code><span>pext_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>C of ... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-type_exception"><a href="#type-type_exception" class="anchor"></a><code><span><span class="keyword">and</span> type_exception</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-type_exception">Astlib.Ast_500.Parsetree.type_exception</a></span><span> = </span><span>{</span></code><ol><li id="type-type_exception.ptyexn_constructor" class="def record field anchored"><a href="#type-type_exception.ptyexn_constructor" class="anchor"></a><code><span>ptyexn_constructor : <a href="#type-extension_constructor">extension_constructor</a>;</span></code></li><li id="type-type_exception.ptyexn_loc" class="def record field anchored"><a href="#type-type_exception.ptyexn_loc" class="anchor"></a><code><span>ptyexn_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-type_exception.ptyexn_attributes" class="def record field anchored"><a href="#type-type_exception.ptyexn_attributes" class="anchor"></a><code><span>ptyexn_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Definition of a new exception (<code>exception E</code>).</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-extension_constructor_kind"><a href="#type-extension_constructor_kind" class="anchor"></a><code><span><span class="keyword">and</span> extension_constructor_kind</span><span> =
<a href="../Astlib/Ast_500/Parsetree/index.html#type-extension_constructor_kind">Astlib.Ast_500.Parsetree.extension_constructor_kind</a></span><span> =
</span></code><ol><li id="type-extension_constructor_kind.Pext_decl" class="def variant constructor anchored"><a href="#type-extension_constructor_kind.Pext_decl" class="anchor"></a><code><span>| </span><span><span class="constructor">Pext_decl</span> <span class="keyword">of</span> <span><span>string <a href="#type-loc">loc</a></span> list</span> * <a href="#type-constructor_arguments">constructor_arguments</a> * <span><a href="#type-core_type">core_type</a> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pext_decl(existentials, c_args, t_opt)</code> describes a new extension constructor. It can be:</p><ul><li><p><code>C of T1 * ... * Tn</code> when:</p><ul><li><code>existentials</code> is <code>[]</code>,</li><li><code>c_args</code> is <code>[T1; ...; Tn]</code>,</li><li><code>t_opt</code> is <code>None</code>.</li></ul></li><li><p><code>C: T0</code> when</p><ul><li><code>existentials</code> is <code>[]</code>,</li><li><code>c_args</code> is <code>[]</code>,</li><li><code>t_opt</code> is <code>Some T0</code>.</li></ul></li><li><p><code>C: T1 * ... * Tn -&gt; T0</code> when</p><ul><li><code>existentials</code> is <code>[]</code>,</li><li><code>c_args</code> is <code>[T1; ...; Tn]</code>,</li><li><code>t_opt</code> is <code>Some T0</code>.</li></ul></li><li><p><code>C: 'a... . T1 * ... * Tn -&gt; T0</code> when</p><ul><li><code>existentials</code> is <code>['a;...]</code>,</li><li><code>c_args</code> is <code>[T1; ... ; Tn]</code>,</li><li><code>t_opt</code> is <code>Some T0</code>.</li></ul></li></ul><span class="comment-delim">*)</span></div></li><li id="type-extension_constructor_kind.Pext_rebind" class="def variant constructor anchored"><a href="#type-extension_constructor_kind.Pext_rebind" class="anchor"></a><code><span>| </span><span><span class="constructor">Pext_rebind</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pext_rebind(D)</code> re-export the constructor <code>D</code> with the new name <code>C</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><h2 id="class-language"><a href="#class-language" class="anchor"></a>Class language</h2><h3 id="type-expressions-for-the-class-language"><a href="#type-expressions-for-the-class-language" class="anchor"></a>Type expressions for the class language</h3><div class="odoc-spec"><div class="spec type anchored" id="type-class_type"><a href="#type-class_type" class="anchor"></a><code><span><span class="keyword">and</span> class_type</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_type">Astlib.Ast_500.Parsetree.class_type</a></span><span> = </span><span>{</span></code><ol><li id="type-class_type.pcty_desc" class="def record field anchored"><a href="#type-class_type.pcty_desc" class="anchor"></a><code><span>pcty_desc : <a href="#type-class_type_desc">class_type_desc</a>;</span></code></li><li id="type-class_type.pcty_loc" class="def record field anchored"><a href="#type-class_type.pcty_loc" class="anchor"></a><code><span>pcty_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-class_type.pcty_attributes" class="def record field anchored"><a href="#type-class_type.pcty_attributes" class="anchor"></a><code><span>pcty_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_desc"><a href="#type-class_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_type_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_type_desc">Astlib.Ast_500.Parsetree.class_type_desc</a></span><span> = </span></code><ol><li id="type-class_type_desc.Pcty_constr" class="def variant constructor anchored"><a href="#type-class_type_desc.Pcty_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcty_constr</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>c</code></li><li><code>['a1, ..., 'an] c</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_type_desc.Pcty_signature" class="def variant constructor anchored"><a href="#type-class_type_desc.Pcty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcty_signature</span> <span class="keyword">of</span> <a href="#type-class_signature">class_signature</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>object ... end</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_desc.Pcty_arrow" class="def variant constructor anchored"><a href="#type-class_type_desc.Pcty_arrow" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcty_arrow</span> <span class="keyword">of</span> <a href="#type-arg_label">arg_label</a> * <a href="#type-core_type">core_type</a> * <a href="#type-class_type">class_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcty_arrow(lbl, T, CT)</code> represents:</p><ul><li><code>T -&gt; CT</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Nolabel"><code>Nolabel</code></a>,</li><li><code>~l:T -&gt; CT</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Labelled"><code>Labelled l</code></a>,</li><li><code>?l:T -&gt; CT</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional l</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_type_desc.Pcty_extension" class="def variant constructor anchored"><a href="#type-class_type_desc.Pcty_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcty_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>%id</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_desc.Pcty_open" class="def variant constructor anchored"><a href="#type-class_type_desc.Pcty_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcty_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a> * <a href="#type-class_type">class_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>let open M in CT</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_signature"><a href="#type-class_signature" class="anchor"></a><code><span><span class="keyword">and</span> class_signature</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_signature">Astlib.Ast_500.Parsetree.class_signature</a></span><span> = </span><span>{</span></code><ol><li id="type-class_signature.pcsig_self" class="def record field anchored"><a href="#type-class_signature.pcsig_self" class="anchor"></a><code><span>pcsig_self : <a href="#type-core_type">core_type</a>;</span></code></li><li id="type-class_signature.pcsig_fields" class="def record field anchored"><a href="#type-class_signature.pcsig_fields" class="anchor"></a><code><span>pcsig_fields : <span><a href="#type-class_type_field">class_type_field</a> list</span>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>class_signature</code> represents:</p><ul><li><code>object('selfpat) ... end</code></li><li><code>object ... end</code> when <a href="#type-class_signature.pcsig_self"><code>pcsig_self</code></a> is <a href="#type-core_type_desc.Ptyp_any"><code>Ptyp_any</code></a></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_field"><a href="#type-class_type_field" class="anchor"></a><code><span><span class="keyword">and</span> class_type_field</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_type_field">Astlib.Ast_500.Parsetree.class_type_field</a></span><span> = </span><span>{</span></code><ol><li id="type-class_type_field.pctf_desc" class="def record field anchored"><a href="#type-class_type_field.pctf_desc" class="anchor"></a><code><span>pctf_desc : <a href="#type-class_type_field_desc">class_type_field_desc</a>;</span></code></li><li id="type-class_type_field.pctf_loc" class="def record field anchored"><a href="#type-class_type_field.pctf_loc" class="anchor"></a><code><span>pctf_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-class_type_field.pctf_attributes" class="def record field anchored"><a href="#type-class_type_field.pctf_attributes" class="anchor"></a><code><span>pctf_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_field_desc"><a href="#type-class_type_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_type_field_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_type_field_desc">Astlib.Ast_500.Parsetree.class_type_field_desc</a></span><span> = </span></code><ol><li id="type-class_type_field_desc.Pctf_inherit" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_inherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_inherit</span> <span class="keyword">of</span> <a href="#type-class_type">class_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>inherit CT</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_field_desc.Pctf_val" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_val</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-mutable_flag">mutable_flag</a> * <a href="#type-virtual_flag">virtual_flag</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>val x: T</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_field_desc.Pctf_method" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_method" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_method</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-private_flag">private_flag</a> * <a href="#type-virtual_flag">virtual_flag</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>method x: T</code></p><p>Note: <code>T</code> can be a <a href="#type-core_type_desc.Ptyp_poly"><code>Ptyp_poly</code></a>.</p><span class="comment-delim">*)</span></div></li><li id="type-class_type_field_desc.Pctf_constraint" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>constraint T1 = T2</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_field_desc.Pctf_attribute" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[@@@id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_type_field_desc.Pctf_extension" class="def variant constructor anchored"><a href="#type-class_type_field_desc.Pctf_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pctf_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%%id]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_infos"><a href="#type-class_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a class_infos</span></span><span> = <span><span class="type-var">'a</span> <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_infos">Astlib.Ast_500.Parsetree.class_infos</a></span></span><span> = </span><span>{</span></code><ol><li id="type-class_infos.pci_virt" class="def record field anchored"><a href="#type-class_infos.pci_virt" class="anchor"></a><code><span>pci_virt : <a href="#type-virtual_flag">virtual_flag</a>;</span></code></li><li id="type-class_infos.pci_params" class="def record field anchored"><a href="#type-class_infos.pci_params" class="anchor"></a><code><span>pci_params : <span><span>(<a href="#type-core_type">core_type</a> * <span>(<a href="#type-variance">variance</a> * <a href="#type-injectivity">injectivity</a>)</span>)</span> list</span>;</span></code></li><li id="type-class_infos.pci_name" class="def record field anchored"><a href="#type-class_infos.pci_name" class="anchor"></a><code><span>pci_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-class_infos.pci_expr" class="def record field anchored"><a href="#type-class_infos.pci_expr" class="anchor"></a><code><span>pci_expr : <span class="type-var">'a</span>;</span></code></li><li id="type-class_infos.pci_loc" class="def record field anchored"><a href="#type-class_infos.pci_loc" class="anchor"></a><code><span>pci_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-class_infos.pci_attributes" class="def record field anchored"><a href="#type-class_infos.pci_attributes" class="anchor"></a><code><span>pci_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>class_expr class_infos</code> represents:</p><ul><li><code>class c = ...</code></li><li><code>class ['a1,...,'an] c = ...</code></li><li><code>class virtual c = ...</code></li></ul><p>They are also used for &quot;class type&quot; declaration.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_description"><a href="#type-class_description" class="anchor"></a><code><span><span class="keyword">and</span> class_description</span><span> = <span><a href="#type-class_type">class_type</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_type_declaration"><a href="#type-class_type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> class_type_declaration</span><span> = <span><a href="#type-class_type">class_type</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><h3 id="value-expressions-for-the-class-language"><a href="#value-expressions-for-the-class-language" class="anchor"></a>Value expressions for the class language</h3><div class="odoc-spec"><div class="spec type anchored" id="type-class_expr"><a href="#type-class_expr" class="anchor"></a><code><span><span class="keyword">and</span> class_expr</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_expr">Astlib.Ast_500.Parsetree.class_expr</a></span><span> = </span><span>{</span></code><ol><li id="type-class_expr.pcl_desc" class="def record field anchored"><a href="#type-class_expr.pcl_desc" class="anchor"></a><code><span>pcl_desc : <a href="#type-class_expr_desc">class_expr_desc</a>;</span></code></li><li id="type-class_expr.pcl_loc" class="def record field anchored"><a href="#type-class_expr.pcl_loc" class="anchor"></a><code><span>pcl_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-class_expr.pcl_attributes" class="def record field anchored"><a href="#type-class_expr.pcl_attributes" class="anchor"></a><code><span>pcl_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_expr_desc"><a href="#type-class_expr_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_expr_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_expr_desc">Astlib.Ast_500.Parsetree.class_expr_desc</a></span><span> = </span></code><ol><li id="type-class_expr_desc.Pcl_constr" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_constr" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_constr</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <span><a href="#type-core_type">core_type</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>c</code> and <code>['a1, ..., 'an] c</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_structure" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_structure" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_structure</span> <span class="keyword">of</span> <a href="#type-class_structure">class_structure</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>object ... end</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_fun" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_fun" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_fun</span> <span class="keyword">of</span> <a href="#type-arg_label">arg_label</a> * <span><a href="#type-expression">expression</a> option</span> * <a href="#type-pattern">pattern</a> * <a href="#type-class_expr">class_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcl_fun(lbl, exp0, P, CE)</code> represents:</p><ul><li><code>fun P -&gt; CE</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Nolabel"><code>Nolabel</code></a> and <code>exp0</code> is <code>None</code>,</li><li><code>fun ~l:P -&gt; CE</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Labelled"><code>Labelled l</code></a> and <code>exp0</code> is <code>None</code>,</li><li><code>fun ?l:P -&gt; CE</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional l</code></a> and <code>exp0</code> is <code>None</code>,</li><li><code>fun ?l:(P = E0) -&gt; CE</code> when <code>lbl</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-arg_label.Optional"><code>Optional l</code></a> and <code>exp0</code> is <code>Some E0</code>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_apply" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_apply</span> <span class="keyword">of</span> <a href="#type-class_expr">class_expr</a> * <span><span>(<a href="#type-arg_label">arg_label</a> * <a href="#type-expression">expression</a>)</span> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)])</code> represents <code>CE ~l1:E1 ... ~ln:En</code>. <code>li</code> can be empty (non labeled argument) or start with <code>?</code> (optional argument).</p><p>Invariant: <code>n &gt; 0</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_let" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_let" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_let</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a> * <span><a href="#type-value_binding">value_binding</a> list</span> * <a href="#type-class_expr">class_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE)</code> represents:</p><ul><li><code>let P1 = E1 and ... and Pn = EN in CE</code> when <code>rec</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Nonrecursive"><code>Nonrecursive</code></a>,</li><li><code>let rec P1 = E1 and ... and Pn = EN in CE</code> when <code>rec</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Recursive"><code>Recursive</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_constraint" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_constraint</span> <span class="keyword">of</span> <a href="#type-class_expr">class_expr</a> * <a href="#type-class_type">class_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(CE : CT)</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_extension" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_expr_desc.Pcl_open" class="def variant constructor anchored"><a href="#type-class_expr_desc.Pcl_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcl_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a> * <a href="#type-class_expr">class_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>let open M in CE</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_structure"><a href="#type-class_structure" class="anchor"></a><code><span><span class="keyword">and</span> class_structure</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_structure">Astlib.Ast_500.Parsetree.class_structure</a></span><span> = </span><span>{</span></code><ol><li id="type-class_structure.pcstr_self" class="def record field anchored"><a href="#type-class_structure.pcstr_self" class="anchor"></a><code><span>pcstr_self : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-class_structure.pcstr_fields" class="def record field anchored"><a href="#type-class_structure.pcstr_fields" class="anchor"></a><code><span>pcstr_fields : <span><a href="#type-class_field">class_field</a> list</span>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <a href="#type-class_structure"><code>class_structure</code></a> represents:</p><ul><li><code>object(selfpat) ... end</code></li><li><code>object ... end</code> when <a href="#type-class_structure.pcstr_self"><code>pcstr_self</code></a> is <a href="#type-pattern_desc.Ppat_any"><code>Ppat_any</code></a></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field"><a href="#type-class_field" class="anchor"></a><code><span><span class="keyword">and</span> class_field</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_field">Astlib.Ast_500.Parsetree.class_field</a></span><span> = </span><span>{</span></code><ol><li id="type-class_field.pcf_desc" class="def record field anchored"><a href="#type-class_field.pcf_desc" class="anchor"></a><code><span>pcf_desc : <a href="#type-class_field_desc">class_field_desc</a>;</span></code></li><li id="type-class_field.pcf_loc" class="def record field anchored"><a href="#type-class_field.pcf_loc" class="anchor"></a><code><span>pcf_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-class_field.pcf_attributes" class="def record field anchored"><a href="#type-class_field.pcf_attributes" class="anchor"></a><code><span>pcf_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field_desc"><a href="#type-class_field_desc" class="anchor"></a><code><span><span class="keyword">and</span> class_field_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_field_desc">Astlib.Ast_500.Parsetree.class_field_desc</a></span><span> = </span></code><ol><li id="type-class_field_desc.Pcf_inherit" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_inherit" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_inherit</span> <span class="keyword">of</span> <a href="#type-override_flag">override_flag</a> * <a href="#type-class_expr">class_expr</a> * <span><span>string <a href="#type-loc">loc</a></span> option</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcf_inherit(flag, CE, s)</code> represents:</p><ul><li><code>inherit CE</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Fresh"><code>Fresh</code></a> and <code>s</code> is <code>None</code>,</li><li><code>inherit CE as x</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Fresh"><code>Fresh</code></a> and <code>s</code> is <code>Some x</code>,</li><li><code>inherit! CE</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Override"><code>Override</code></a> and <code>s</code> is <code>None</code>,</li><li><code>inherit! CE as x</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Override"><code>Override</code></a> and <code>s</code> is <code>Some x</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_val" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_val</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-mutable_flag">mutable_flag</a> * <a href="#type-class_field_kind">class_field_kind</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pcf_val(x,flag, kind)</code> represents:</p><ul><li><code>val x = E</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Immutable"><code>Immutable</code></a> and <code>kind</code> is <a href="#type-class_field_kind.Cfk_concrete"><code>Cfk_concrete(Fresh, E)</code></a></li><li><code>val virtual x: T</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Immutable"><code>Immutable</code></a> and <code>kind</code> is <a href="#type-class_field_kind.Cfk_virtual"><code>Cfk_virtual(T)</code></a></li><li><code>val mutable x = E</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Mutable"><code>Mutable</code></a> and <code>kind</code> is <a href="#type-class_field_kind.Cfk_concrete"><code>Cfk_concrete(Fresh, E)</code></a></li><li><code>val mutable virtual x: T</code> when <code>flag</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-mutable_flag.Mutable"><code>Mutable</code></a> and <code>kind</code> is <a href="#type-class_field_kind.Cfk_virtual"><code>Cfk_virtual(T)</code></a></li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_method" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_method" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_method</span> <span class="keyword">of</span> <span><a href="#type-label">label</a> <a href="#type-loc">loc</a></span> * <a href="#type-private_flag">private_flag</a> * <a href="#type-class_field_kind">class_field_kind</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>method x = E</code> (<code>E</code> can be a <a href="#type-expression_desc.Pexp_poly"><code>Pexp_poly</code></a>)</li><li><code>method virtual x: T</code> (<code>T</code> can be a <a href="#type-core_type_desc.Ptyp_poly"><code>Ptyp_poly</code></a>)</li></ul><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_constraint" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_constraint</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a> * <a href="#type-core_type">core_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>constraint T1 = T2</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_initializer" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_initializer" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_initializer</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>initializer E</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_attribute" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[@@@id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-class_field_desc.Pcf_extension" class="def variant constructor anchored"><a href="#type-class_field_desc.Pcf_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pcf_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%%id]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_field_kind"><a href="#type-class_field_kind" class="anchor"></a><code><span><span class="keyword">and</span> class_field_kind</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-class_field_kind">Astlib.Ast_500.Parsetree.class_field_kind</a></span><span> = </span></code><ol><li id="type-class_field_kind.Cfk_virtual" class="def variant constructor anchored"><a href="#type-class_field_kind.Cfk_virtual" class="anchor"></a><code><span>| </span><span><span class="constructor">Cfk_virtual</span> <span class="keyword">of</span> <a href="#type-core_type">core_type</a></span></code></li><li id="type-class_field_kind.Cfk_concrete" class="def variant constructor anchored"><a href="#type-class_field_kind.Cfk_concrete" class="anchor"></a><code><span>| </span><span><span class="constructor">Cfk_concrete</span> <span class="keyword">of</span> <a href="#type-override_flag">override_flag</a> * <a href="#type-expression">expression</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-class_declaration"><a href="#type-class_declaration" class="anchor"></a><code><span><span class="keyword">and</span> class_declaration</span><span> = <span><a href="#type-class_expr">class_expr</a> <a href="#type-class_infos">class_infos</a></span></span></code></div></div><h2 id="module-language"><a href="#module-language" class="anchor"></a>Module language</h2><h3 id="type-expressions-for-the-module-language"><a href="#type-expressions-for-the-module-language" class="anchor"></a>Type expressions for the module language</h3><div class="odoc-spec"><div class="spec type anchored" id="type-module_type"><a href="#type-module_type" class="anchor"></a><code><span><span class="keyword">and</span> module_type</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_type">Astlib.Ast_500.Parsetree.module_type</a></span><span> = </span><span>{</span></code><ol><li id="type-module_type.pmty_desc" class="def record field anchored"><a href="#type-module_type.pmty_desc" class="anchor"></a><code><span>pmty_desc : <a href="#type-module_type_desc">module_type_desc</a>;</span></code></li><li id="type-module_type.pmty_loc" class="def record field anchored"><a href="#type-module_type.pmty_loc" class="anchor"></a><code><span>pmty_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-module_type.pmty_attributes" class="def record field anchored"><a href="#type-module_type.pmty_attributes" class="anchor"></a><code><span>pmty_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type_desc"><a href="#type-module_type_desc" class="anchor"></a><code><span><span class="keyword">and</span> module_type_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_type_desc">Astlib.Ast_500.Parsetree.module_type_desc</a></span><span> = </span></code><ol><li id="type-module_type_desc.Pmty_ident" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_ident</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pmty_ident(S)</code> represents <code>S</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_signature" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_signature" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_signature</span> <span class="keyword">of</span> <a href="#type-signature">signature</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>sig ... end</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_functor" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_functor</span> <span class="keyword">of</span> <a href="#type-functor_parameter">functor_parameter</a> * <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>functor(X : MT1) -&gt; MT2</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_with" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_with" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_with</span> <span class="keyword">of</span> <a href="#type-module_type">module_type</a> * <span><a href="#type-with_constraint">with_constraint</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>MT with ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_typeof" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_typeof" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_typeof</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module type of ME</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_extension" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_desc.Pmty_alias" class="def variant constructor anchored"><a href="#type-module_type_desc.Pmty_alias" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmty_alias</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(module M)</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-functor_parameter"><a href="#type-functor_parameter" class="anchor"></a><code><span><span class="keyword">and</span> functor_parameter</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-functor_parameter">Astlib.Ast_500.Parsetree.functor_parameter</a></span><span> = </span></code><ol><li id="type-functor_parameter.Unit" class="def variant constructor anchored"><a href="#type-functor_parameter.Unit" class="anchor"></a><code><span>| </span><span><span class="constructor">Unit</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>()</code></p><span class="comment-delim">*)</span></div></li><li id="type-functor_parameter.Named" class="def variant constructor anchored"><a href="#type-functor_parameter.Named" class="anchor"></a><code><span>| </span><span><span class="constructor">Named</span> <span class="keyword">of</span> <span><span>string option</span> <a href="#type-loc">loc</a></span> * <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Named(name, MT)</code> represents:</p><ul><li><code>(X : MT)</code> when <code>name</code> is <code>Some X</code>,</li><li><code>(_ : MT)</code> when <code>name</code> is <code>None</code></li></ul><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature"><a href="#type-signature" class="anchor"></a><code><span><span class="keyword">and</span> signature</span><span> = <span><a href="#type-signature_item">signature_item</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature_item"><a href="#type-signature_item" class="anchor"></a><code><span><span class="keyword">and</span> signature_item</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-signature_item">Astlib.Ast_500.Parsetree.signature_item</a></span><span> = </span><span>{</span></code><ol><li id="type-signature_item.psig_desc" class="def record field anchored"><a href="#type-signature_item.psig_desc" class="anchor"></a><code><span>psig_desc : <a href="#type-signature_item_desc">signature_item_desc</a>;</span></code></li><li id="type-signature_item.psig_loc" class="def record field anchored"><a href="#type-signature_item.psig_loc" class="anchor"></a><code><span>psig_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-signature_item_desc"><a href="#type-signature_item_desc" class="anchor"></a><code><span><span class="keyword">and</span> signature_item_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-signature_item_desc">Astlib.Ast_500.Parsetree.signature_item_desc</a></span><span> = </span></code><ol><li id="type-signature_item_desc.Psig_value" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_value</span> <span class="keyword">of</span> <a href="#type-value_description">value_description</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>val x: T</code></li><li><code>external x: T = &quot;s1&quot; ... &quot;sn&quot;</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_type" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_type</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a> * <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>type t1 = ... and ... and tn = ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_typesubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_typesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_typesubst</span> <span class="keyword">of</span> <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>type t1 := ... and ... and tn := ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_typext" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_typext" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_typext</span> <span class="keyword">of</span> <a href="#type-type_extension">type_extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>type t1 += ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_exception" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_exception</span> <span class="keyword">of</span> <a href="#type-type_exception">type_exception</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>exception C of T</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_module" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_module</span> <span class="keyword">of</span> <a href="#type-module_declaration">module_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module X = M</code> and <code>module X : MT</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_modsubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_modsubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_modsubst</span> <span class="keyword">of</span> <a href="#type-module_substitution">module_substitution</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module X := M</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_recmodule" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_recmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_recmodule</span> <span class="keyword">of</span> <span><a href="#type-module_declaration">module_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module rec X1 : MT1 and ... and Xn : MTn</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_modtype" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_modtype</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module type S = MT</code> and <code>module type S</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_modtypesubst" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_modtypesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_modtypesubst</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module type S := ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_open" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_open</span> <span class="keyword">of</span> <a href="#type-open_description">open_description</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>open X</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_include" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_include" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_include</span> <span class="keyword">of</span> <a href="#type-include_description">include_description</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>include MT</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_class" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_class</span> <span class="keyword">of</span> <span><a href="#type-class_description">class_description</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>class c1 : ... and ... and cn : ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_class_type" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_class_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_class_type</span> <span class="keyword">of</span> <span><a href="#type-class_type_declaration">class_type_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>class type ct1 = ... and ... and ctn = ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_attribute" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[@@@id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-signature_item_desc.Psig_extension" class="def variant constructor anchored"><a href="#type-signature_item_desc.Psig_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Psig_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a> * <a href="#type-attributes">attributes</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%%id]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_declaration"><a href="#type-module_declaration" class="anchor"></a><code><span><span class="keyword">and</span> module_declaration</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_declaration">Astlib.Ast_500.Parsetree.module_declaration</a></span><span> = </span><span>{</span></code><ol><li id="type-module_declaration.pmd_name" class="def record field anchored"><a href="#type-module_declaration.pmd_name" class="anchor"></a><code><span>pmd_name : <span><span>string option</span> <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-module_declaration.pmd_type" class="def record field anchored"><a href="#type-module_declaration.pmd_type" class="anchor"></a><code><span>pmd_type : <a href="#type-module_type">module_type</a>;</span></code></li><li id="type-module_declaration.pmd_attributes" class="def record field anchored"><a href="#type-module_declaration.pmd_attributes" class="anchor"></a><code><span>pmd_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_declaration.pmd_loc" class="def record field anchored"><a href="#type-module_declaration.pmd_loc" class="anchor"></a><code><span>pmd_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>module_declaration</code> represents <code>S : MT</code></p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_substitution"><a href="#type-module_substitution" class="anchor"></a><code><span><span class="keyword">and</span> module_substitution</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_substitution">Astlib.Ast_500.Parsetree.module_substitution</a></span><span> = </span><span>{</span></code><ol><li id="type-module_substitution.pms_name" class="def record field anchored"><a href="#type-module_substitution.pms_name" class="anchor"></a><code><span>pms_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-module_substitution.pms_manifest" class="def record field anchored"><a href="#type-module_substitution.pms_manifest" class="anchor"></a><code><span>pms_manifest : <a href="#type-longident_loc">longident_loc</a>;</span></code></li><li id="type-module_substitution.pms_attributes" class="def record field anchored"><a href="#type-module_substitution.pms_attributes" class="anchor"></a><code><span>pms_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_substitution.pms_loc" class="def record field anchored"><a href="#type-module_substitution.pms_loc" class="anchor"></a><code><span>pms_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>module_substitution</code> represents <code>S := M</code></p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_type_declaration"><a href="#type-module_type_declaration" class="anchor"></a><code><span><span class="keyword">and</span> module_type_declaration</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_type_declaration">Astlib.Ast_500.Parsetree.module_type_declaration</a></span><span> =
</span><span>{</span></code><ol><li id="type-module_type_declaration.pmtd_name" class="def record field anchored"><a href="#type-module_type_declaration.pmtd_name" class="anchor"></a><code><span>pmtd_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-module_type_declaration.pmtd_type" class="def record field anchored"><a href="#type-module_type_declaration.pmtd_type" class="anchor"></a><code><span>pmtd_type : <span><a href="#type-module_type">module_type</a> option</span>;</span></code></li><li id="type-module_type_declaration.pmtd_attributes" class="def record field anchored"><a href="#type-module_type_declaration.pmtd_attributes" class="anchor"></a><code><span>pmtd_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@@id1] [@@id2]</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_type_declaration.pmtd_loc" class="def record field anchored"><a href="#type-module_type_declaration.pmtd_loc" class="anchor"></a><code><span>pmtd_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>module_type_declaration</code> represents:</p><ul><li><code>S = MT</code>,</li><li><code>S</code> for abstract module type declaration, when <a href="#type-module_type_declaration.pmtd_type"><code>pmtd_type</code></a> is <code>None</code>.</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_infos"><a href="#type-open_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a open_infos</span></span><span> = <span><span class="type-var">'a</span> <a href="../Astlib/Ast_500/Parsetree/index.html#type-open_infos">Astlib.Ast_500.Parsetree.open_infos</a></span></span><span> = </span><span>{</span></code><ol><li id="type-open_infos.popen_expr" class="def record field anchored"><a href="#type-open_infos.popen_expr" class="anchor"></a><code><span>popen_expr : <span class="type-var">'a</span>;</span></code></li><li id="type-open_infos.popen_override" class="def record field anchored"><a href="#type-open_infos.popen_override" class="anchor"></a><code><span>popen_override : <a href="#type-override_flag">override_flag</a>;</span></code></li><li id="type-open_infos.popen_loc" class="def record field anchored"><a href="#type-open_infos.popen_loc" class="anchor"></a><code><span>popen_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-open_infos.popen_attributes" class="def record field anchored"><a href="#type-open_infos.popen_attributes" class="anchor"></a><code><span>popen_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>'a open_infos</code> represents:</p><ul><li><code>open! X</code> when <a href="#type-open_infos.popen_override"><code>popen_override</code></a> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Override"><code>Override</code></a> (silences the &quot;used identifier shadowing&quot; warning)</li><li><code>open X</code> when <a href="#type-open_infos.popen_override"><code>popen_override</code></a> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-override_flag.Fresh"><code>Fresh</code></a></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_description"><a href="#type-open_description" class="anchor"></a><code><span><span class="keyword">and</span> open_description</span><span> = <span><a href="#type-longident_loc">longident_loc</a> <a href="#type-open_infos">open_infos</a></span></span></code></div><div class="spec-doc"><p>Values of type <code>open_description</code> represents:</p><ul><li><code>open M.N</code></li><li><code>open M(N).O</code></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-open_declaration"><a href="#type-open_declaration" class="anchor"></a><code><span><span class="keyword">and</span> open_declaration</span><span> = <span><a href="#type-module_expr">module_expr</a> <a href="#type-open_infos">open_infos</a></span></span></code></div><div class="spec-doc"><p>Values of type <code>open_declaration</code> represents:</p><ul><li><code>open M.N</code></li><li><code>open M(N).O</code></li><li><code>open struct ... end</code></li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_infos"><a href="#type-include_infos" class="anchor"></a><code><span><span class="keyword">and</span> <span>'a include_infos</span></span><span> = <span><span class="type-var">'a</span> <a href="../Astlib/Ast_500/Parsetree/index.html#type-include_infos">Astlib.Ast_500.Parsetree.include_infos</a></span></span><span> = </span><span>{</span></code><ol><li id="type-include_infos.pincl_mod" class="def record field anchored"><a href="#type-include_infos.pincl_mod" class="anchor"></a><code><span>pincl_mod : <span class="type-var">'a</span>;</span></code></li><li id="type-include_infos.pincl_loc" class="def record field anchored"><a href="#type-include_infos.pincl_loc" class="anchor"></a><code><span>pincl_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-include_infos.pincl_attributes" class="def record field anchored"><a href="#type-include_infos.pincl_attributes" class="anchor"></a><code><span>pincl_attributes : <a href="#type-attributes">attributes</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_description"><a href="#type-include_description" class="anchor"></a><code><span><span class="keyword">and</span> include_description</span><span> = <span><a href="#type-module_type">module_type</a> <a href="#type-include_infos">include_infos</a></span></span></code></div><div class="spec-doc"><p>Values of type <code>include_description</code> represents <code>include MT</code></p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-include_declaration"><a href="#type-include_declaration" class="anchor"></a><code><span><span class="keyword">and</span> include_declaration</span><span> = <span><a href="#type-module_expr">module_expr</a> <a href="#type-include_infos">include_infos</a></span></span></code></div><div class="spec-doc"><p>Values of type <code>include_declaration</code> represents <code>include ME</code></p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-with_constraint"><a href="#type-with_constraint" class="anchor"></a><code><span><span class="keyword">and</span> with_constraint</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-with_constraint">Astlib.Ast_500.Parsetree.with_constraint</a></span><span> = </span></code><ol><li id="type-with_constraint.Pwith_type" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_type</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-type_declaration">type_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with type X.t = ...</code></p><p>Note: the last component of the longident must match the name of the type_declaration.</p><span class="comment-delim">*)</span></div></li><li id="type-with_constraint.Pwith_module" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_module</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with module X.Y = Z</code></p><span class="comment-delim">*)</span></div></li><li id="type-with_constraint.Pwith_modtype" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_modtype</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with module type X.Y = Z</code></p><span class="comment-delim">*)</span></div></li><li id="type-with_constraint.Pwith_modtypesubst" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_modtypesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_modtypesubst</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with module type X.Y := sig end</code></p><span class="comment-delim">*)</span></div></li><li id="type-with_constraint.Pwith_typesubst" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_typesubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_typesubst</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-type_declaration">type_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with type X.t := ..., same format as [Pwith_type]</code></p><span class="comment-delim">*)</span></div></li><li id="type-with_constraint.Pwith_modsubst" class="def variant constructor anchored"><a href="#type-with_constraint.Pwith_modsubst" class="anchor"></a><code><span>| </span><span><span class="constructor">Pwith_modsubst</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a> * <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>with module X.Y := Z</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><h3 id="value-expressions-for-the-module-language"><a href="#value-expressions-for-the-module-language" class="anchor"></a>Value expressions for the module language</h3><div class="odoc-spec"><div class="spec type anchored" id="type-module_expr"><a href="#type-module_expr" class="anchor"></a><code><span><span class="keyword">and</span> module_expr</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_expr">Astlib.Ast_500.Parsetree.module_expr</a></span><span> = </span><span>{</span></code><ol><li id="type-module_expr.pmod_desc" class="def record field anchored"><a href="#type-module_expr.pmod_desc" class="anchor"></a><code><span>pmod_desc : <a href="#type-module_expr_desc">module_expr_desc</a>;</span></code></li><li id="type-module_expr.pmod_loc" class="def record field anchored"><a href="#type-module_expr.pmod_loc" class="anchor"></a><code><span>pmod_loc : <a href="#type-location">location</a>;</span></code></li><li id="type-module_expr.pmod_attributes" class="def record field anchored"><a href="#type-module_expr.pmod_attributes" class="anchor"></a><code><span>pmod_attributes : <a href="#type-attributes">attributes</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>... [@id1] [@id2]</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_expr_desc"><a href="#type-module_expr_desc" class="anchor"></a><code><span><span class="keyword">and</span> module_expr_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_expr_desc">Astlib.Ast_500.Parsetree.module_expr_desc</a></span><span> = </span></code><ol><li id="type-module_expr_desc.Pmod_ident" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_ident</span> <span class="keyword">of</span> <a href="#type-longident_loc">longident_loc</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>X</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_structure" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_structure" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_structure</span> <span class="keyword">of</span> <a href="#type-structure">structure</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>struct ... end</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_functor" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_functor" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_functor</span> <span class="keyword">of</span> <a href="#type-functor_parameter">functor_parameter</a> * <a href="#type-module_expr">module_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>functor(X : MT1) -&gt; ME</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_apply" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_apply" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_apply</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a> * <a href="#type-module_expr">module_expr</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>ME1(ME2)</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_constraint" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_constraint" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_constraint</span> <span class="keyword">of</span> <a href="#type-module_expr">module_expr</a> * <a href="#type-module_type">module_type</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(ME : MT)</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_unpack" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_unpack" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_unpack</span> <span class="keyword">of</span> <a href="#type-expression">expression</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>(val E)</code></p><span class="comment-delim">*)</span></div></li><li id="type-module_expr_desc.Pmod_extension" class="def variant constructor anchored"><a href="#type-module_expr_desc.Pmod_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pmod_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%id]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure"><a href="#type-structure" class="anchor"></a><code><span><span class="keyword">and</span> structure</span><span> = <span><a href="#type-structure_item">structure_item</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure_item"><a href="#type-structure_item" class="anchor"></a><code><span><span class="keyword">and</span> structure_item</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-structure_item">Astlib.Ast_500.Parsetree.structure_item</a></span><span> = </span><span>{</span></code><ol><li id="type-structure_item.pstr_desc" class="def record field anchored"><a href="#type-structure_item.pstr_desc" class="anchor"></a><code><span>pstr_desc : <a href="#type-structure_item_desc">structure_item_desc</a>;</span></code></li><li id="type-structure_item.pstr_loc" class="def record field anchored"><a href="#type-structure_item.pstr_loc" class="anchor"></a><code><span>pstr_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-structure_item_desc"><a href="#type-structure_item_desc" class="anchor"></a><code><span><span class="keyword">and</span> structure_item_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-structure_item_desc">Astlib.Ast_500.Parsetree.structure_item_desc</a></span><span> = </span></code><ol><li id="type-structure_item_desc.Pstr_eval" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_eval" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_eval</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-attributes">attributes</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>E</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_value" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_value" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_value</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a> * <span><a href="#type-value_binding">value_binding</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))])</code> represents:</p><ul><li><code>let P1 = E1 and ... and Pn = EN</code> when <code>rec</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Nonrecursive"><code>Nonrecursive</code></a>,</li><li><code>let rec P1 = E1 and ... and Pn = EN </code> when <code>rec</code> is <a href="../Astlib/Ast_500/Asttypes/index.html#type-rec_flag.Recursive"><code>Recursive</code></a>.</li></ul><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_primitive" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_primitive" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_primitive</span> <span class="keyword">of</span> <a href="#type-value_description">value_description</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>val x: T</code></li><li><code>external x: T = &quot;s1&quot; ... &quot;sn&quot; </code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_type" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_type</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a> * <span><a href="#type-type_declaration">type_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>type t1 = ... and ... and tn = ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_typext" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_typext" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_typext</span> <span class="keyword">of</span> <a href="#type-type_extension">type_extension</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>type t1 += ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_exception" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_exception" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_exception</span> <span class="keyword">of</span> <a href="#type-type_exception">type_exception</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><ul><li><code>exception C of T</code></li><li><code>exception C = M.X</code></li></ul><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_module" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_module" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_module</span> <span class="keyword">of</span> <a href="#type-module_binding">module_binding</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module X = ME</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_recmodule" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_recmodule" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_recmodule</span> <span class="keyword">of</span> <span><a href="#type-module_binding">module_binding</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module rec X1 = ME1 and ... and Xn = MEn</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_modtype" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_modtype" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_modtype</span> <span class="keyword">of</span> <a href="#type-module_type_declaration">module_type_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>module type S = MT</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_open" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_open" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_open</span> <span class="keyword">of</span> <a href="#type-open_declaration">open_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>open X</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_class" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_class" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_class</span> <span class="keyword">of</span> <span><a href="#type-class_declaration">class_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>class c1 = ... and ... and cn = ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_class_type" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_class_type" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_class_type</span> <span class="keyword">of</span> <span><a href="#type-class_type_declaration">class_type_declaration</a> list</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>class type ct1 = ... and ... and ctn = ...</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_include" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_include" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_include</span> <span class="keyword">of</span> <a href="#type-include_declaration">include_declaration</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>include ME</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_attribute" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_attribute" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_attribute</span> <span class="keyword">of</span> <a href="#type-attribute">attribute</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[@@@id]</code></p><span class="comment-delim">*)</span></div></li><li id="type-structure_item_desc.Pstr_extension" class="def variant constructor anchored"><a href="#type-structure_item_desc.Pstr_extension" class="anchor"></a><code><span>| </span><span><span class="constructor">Pstr_extension</span> <span class="keyword">of</span> <a href="#type-extension">extension</a> * <a href="#type-attributes">attributes</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>[%%id]</code></p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-value_binding"><a href="#type-value_binding" class="anchor"></a><code><span><span class="keyword">and</span> value_binding</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-value_binding">Astlib.Ast_500.Parsetree.value_binding</a></span><span> = </span><span>{</span></code><ol><li id="type-value_binding.pvb_pat" class="def record field anchored"><a href="#type-value_binding.pvb_pat" class="anchor"></a><code><span>pvb_pat : <a href="#type-pattern">pattern</a>;</span></code></li><li id="type-value_binding.pvb_expr" class="def record field anchored"><a href="#type-value_binding.pvb_expr" class="anchor"></a><code><span>pvb_expr : <a href="#type-expression">expression</a>;</span></code></li><li id="type-value_binding.pvb_attributes" class="def record field anchored"><a href="#type-value_binding.pvb_attributes" class="anchor"></a><code><span>pvb_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-value_binding.pvb_loc" class="def record field anchored"><a href="#type-value_binding.pvb_loc" class="anchor"></a><code><span>pvb_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-module_binding"><a href="#type-module_binding" class="anchor"></a><code><span><span class="keyword">and</span> module_binding</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-module_binding">Astlib.Ast_500.Parsetree.module_binding</a></span><span> = </span><span>{</span></code><ol><li id="type-module_binding.pmb_name" class="def record field anchored"><a href="#type-module_binding.pmb_name" class="anchor"></a><code><span>pmb_name : <span><span>string option</span> <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-module_binding.pmb_expr" class="def record field anchored"><a href="#type-module_binding.pmb_expr" class="anchor"></a><code><span>pmb_expr : <a href="#type-module_expr">module_expr</a>;</span></code></li><li id="type-module_binding.pmb_attributes" class="def record field anchored"><a href="#type-module_binding.pmb_attributes" class="anchor"></a><code><span>pmb_attributes : <a href="#type-attributes">attributes</a>;</span></code></li><li id="type-module_binding.pmb_loc" class="def record field anchored"><a href="#type-module_binding.pmb_loc" class="anchor"></a><code><span>pmb_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Values of type <code>module_binding</code> represents <code>module X = ME</code></p></div></div><h2 id="toplevel"><a href="#toplevel" class="anchor"></a>Toplevel</h2><h3 id="toplevel-phrases"><a href="#toplevel-phrases" class="anchor"></a>Toplevel phrases</h3><div class="odoc-spec"><div class="spec type anchored" id="type-toplevel_phrase"><a href="#type-toplevel_phrase" class="anchor"></a><code><span><span class="keyword">and</span> toplevel_phrase</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-toplevel_phrase">Astlib.Ast_500.Parsetree.toplevel_phrase</a></span><span> = </span></code><ol><li id="type-toplevel_phrase.Ptop_def" class="def variant constructor anchored"><a href="#type-toplevel_phrase.Ptop_def" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptop_def</span> <span class="keyword">of</span> <a href="#type-structure">structure</a></span></code></li><li id="type-toplevel_phrase.Ptop_dir" class="def variant constructor anchored"><a href="#type-toplevel_phrase.Ptop_dir" class="anchor"></a><code><span>| </span><span><span class="constructor">Ptop_dir</span> <span class="keyword">of</span> <a href="#type-toplevel_directive">toplevel_directive</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>#use</code>, <code>#load</code> ...</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-toplevel_directive"><a href="#type-toplevel_directive" class="anchor"></a><code><span><span class="keyword">and</span> toplevel_directive</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-toplevel_directive">Astlib.Ast_500.Parsetree.toplevel_directive</a></span><span> = </span><span>{</span></code><ol><li id="type-toplevel_directive.pdir_name" class="def record field anchored"><a href="#type-toplevel_directive.pdir_name" class="anchor"></a><code><span>pdir_name : <span>string <a href="#type-loc">loc</a></span>;</span></code></li><li id="type-toplevel_directive.pdir_arg" class="def record field anchored"><a href="#type-toplevel_directive.pdir_arg" class="anchor"></a><code><span>pdir_arg : <span><a href="#type-directive_argument">directive_argument</a> option</span>;</span></code></li><li id="type-toplevel_directive.pdir_loc" class="def record field anchored"><a href="#type-toplevel_directive.pdir_loc" class="anchor"></a><code><span>pdir_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-directive_argument"><a href="#type-directive_argument" class="anchor"></a><code><span><span class="keyword">and</span> directive_argument</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-directive_argument">Astlib.Ast_500.Parsetree.directive_argument</a></span><span> = </span><span>{</span></code><ol><li id="type-directive_argument.pdira_desc" class="def record field anchored"><a href="#type-directive_argument.pdira_desc" class="anchor"></a><code><span>pdira_desc : <a href="#type-directive_argument_desc">directive_argument_desc</a>;</span></code></li><li id="type-directive_argument.pdira_loc" class="def record field anchored"><a href="#type-directive_argument.pdira_loc" class="anchor"></a><code><span>pdira_loc : <a href="#type-location">location</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-directive_argument_desc"><a href="#type-directive_argument_desc" class="anchor"></a><code><span><span class="keyword">and</span> directive_argument_desc</span><span> = <a href="../Astlib/Ast_500/Parsetree/index.html#type-directive_argument_desc">Astlib.Ast_500.Parsetree.directive_argument_desc</a></span><span> =
</span></code><ol><li id="type-directive_argument_desc.Pdir_string" class="def variant constructor anchored"><a href="#type-directive_argument_desc.Pdir_string" class="anchor"></a><code><span>| </span><span><span class="constructor">Pdir_string</span> <span class="keyword">of</span> string</span></code></li><li id="type-directive_argument_desc.Pdir_int" class="def variant constructor anchored"><a href="#type-directive_argument_desc.Pdir_int" class="anchor"></a><code><span>| </span><span><span class="constructor">Pdir_int</span> <span class="keyword">of</span> string * <span>char option</span></span></code></li><li id="type-directive_argument_desc.Pdir_ident" class="def variant constructor anchored"><a href="#type-directive_argument_desc.Pdir_ident" class="anchor"></a><code><span>| </span><span><span class="constructor">Pdir_ident</span> <span class="keyword">of</span> <a href="#type-longident">longident</a></span></code></li><li id="type-directive_argument_desc.Pdir_bool" class="def variant constructor anchored"><a href="#type-directive_argument_desc.Pdir_bool" class="anchor"></a><code><span>| </span><span><span class="constructor">Pdir_bool</span> <span class="keyword">of</span> bool</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-cases"><a href="#type-cases" class="anchor"></a><code><span><span class="keyword">and</span> cases</span><span> = <span><a href="#type-case">case</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-map"><a href="#class-map" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> </span><span><a href="class-map/index.html">map</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-iter"><a href="#class-iter" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> </span><span><a href="class-iter/index.html">iter</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-fold"><a href="#class-fold" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> 'acc </span><span><a href="class-fold/index.html">fold</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-fold_map"><a href="#class-fold_map" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> 'acc </span><span><a href="class-fold_map/index.html">fold_map</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-map_with_context"><a href="#class-map_with_context" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> 'ctx </span><span><a href="class-map_with_context/index.html">map_with_context</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-lift"><a href="#class-lift" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> 'res </span><span><a href="class-lift/index.html">lift</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-lift_map_with_context"><a href="#class-lift_map_with_context" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> ['ctx, 'res] </span><span><a href="class-lift_map_with_context/index.html">lift_map_with_context</a></span><span> : <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div></details></div><div class="odoc-include"><div class="spec-doc"><p>Make sure code using Ppxlib doesn't refer to compiler-libs without being explicit about it:</p></div><details><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></summary><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/index.html">Ocaml_shadow</a> <span class="keyword">end</span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Ast_helper/index.html">Ast_helper</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ast_helper</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Asttypes/index.html">Asttypes</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Asttypes</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Docstrings/index.html">Docstrings</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Docstrings</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Identifiable/index.html">Identifiable</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Identifiable</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Lexer/index.html">Lexer</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lexer</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Location/index.html">Location</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Location</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Longident/index.html">Longident</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Longident</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Parse/index.html">Parse</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Parse</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Parsetree/index.html">Parsetree</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Parsetree</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Pprintast/index.html">Pprintast</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Pprintast</a></span>
<span class="keyword">with</span> <span><span class="keyword">module</span> <a href="../../ocaml-compiler-libs/Ocaml_shadow/Syntaxerr/index.html">Syntaxerr</a> := <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Syntaxerr</a></span></span></code></summary><div class="odoc-spec"><div class="spec module anchored" id="module-Do_not_use_directly"><a href="#module-Do_not_use_directly" class="anchor"></a><code><span><span class="keyword">module</span> Do_not_use_directly</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Do_not_use_directly</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Afl_instrument"><a href="#module-Afl_instrument" class="anchor"></a><code><span><span class="keyword">module</span> Afl_instrument</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Afl_instrument</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Alias_analysis"><a href="#module-Alias_analysis" class="anchor"></a><code><span><span class="keyword">module</span> Alias_analysis</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Alias_analysis</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Allocated_const"><a href="#module-Allocated_const" class="anchor"></a><code><span><span class="keyword">module</span> Allocated_const</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Allocated_const</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Annot"><a href="#module-Annot" class="anchor"></a><code><span><span class="keyword">module</span> Annot</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Annot</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Arch"><a href="#module-Arch" class="anchor"></a><code><span><span class="keyword">module</span> Arch</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Arch</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Arg_helper"><a href="#module-Arg_helper" class="anchor"></a><code><span><span class="keyword">module</span> Arg_helper</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Arg_helper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Asmgen"><a href="#module-Asmgen" class="anchor"></a><code><span><span class="keyword">module</span> Asmgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Asmgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Asmlibrarian"><a href="#module-Asmlibrarian" class="anchor"></a><code><span><span class="keyword">module</span> Asmlibrarian</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Asmlibrarian</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Asmlink"><a href="#module-Asmlink" class="anchor"></a><code><span><span class="keyword">module</span> Asmlink</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Asmlink</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Asmpackager"><a href="#module-Asmpackager" class="anchor"></a><code><span><span class="keyword">module</span> Asmpackager</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Asmpackager</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_invariants"><a href="#module-Ast_invariants" class="anchor"></a><code><span><span class="keyword">module</span> Ast_invariants</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ast_invariants</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_iterator"><a href="#module-Ast_iterator" class="anchor"></a><code><span><span class="keyword">module</span> Ast_iterator</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ast_iterator</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ast_mapper"><a href="#module-Ast_mapper" class="anchor"></a><code><span><span class="keyword">module</span> Ast_mapper</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ast_mapper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Attr_helper"><a href="#module-Attr_helper" class="anchor"></a><code><span><span class="keyword">module</span> Attr_helper</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Attr_helper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Augment_specialised_args"><a href="#module-Augment_specialised_args" class="anchor"></a><code><span><span class="keyword">module</span> Augment_specialised_args</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Augment_specialised_args</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Backend_intf"><a href="#module-Backend_intf" class="anchor"></a><code><span><span class="keyword">module</span> Backend_intf</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Backend_intf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Backend_var"><a href="#module-Backend_var" class="anchor"></a><code><span><span class="keyword">module</span> Backend_var</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Backend_var</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Binutils"><a href="#module-Binutils" class="anchor"></a><code><span><span class="keyword">module</span> Binutils</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Binutils</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Branch_relaxation"><a href="#module-Branch_relaxation" class="anchor"></a><code><span><span class="keyword">module</span> Branch_relaxation</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Branch_relaxation</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Branch_relaxation_intf"><a href="#module-Branch_relaxation_intf" class="anchor"></a><code><span><span class="keyword">module</span> Branch_relaxation_intf</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Branch_relaxation_intf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Btype"><a href="#module-Btype" class="anchor"></a><code><span><span class="keyword">module</span> Btype</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Btype</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Build_export_info"><a href="#module-Build_export_info" class="anchor"></a><code><span><span class="keyword">module</span> Build_export_info</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Build_export_info</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Build_path_prefix_map"><a href="#module-Build_path_prefix_map" class="anchor"></a><code><span><span class="keyword">module</span> Build_path_prefix_map</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Build_path_prefix_map</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Builtin_attributes"><a href="#module-Builtin_attributes" class="anchor"></a><code><span><span class="keyword">module</span> Builtin_attributes</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Builtin_attributes</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Bytegen"><a href="#module-Bytegen" class="anchor"></a><code><span><span class="keyword">module</span> Bytegen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Bytegen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Bytelibrarian"><a href="#module-Bytelibrarian" class="anchor"></a><code><span><span class="keyword">module</span> Bytelibrarian</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Bytelibrarian</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Bytelink"><a href="#module-Bytelink" class="anchor"></a><code><span><span class="keyword">module</span> Bytelink</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Bytelink</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Bytepackager"><a href="#module-Bytepackager" class="anchor"></a><code><span><span class="keyword">module</span> Bytepackager</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Bytepackager</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Bytesections"><a href="#module-Bytesections" class="anchor"></a><code><span><span class="keyword">module</span> Bytesections</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Bytesections</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-CSE"><a href="#module-CSE" class="anchor"></a><code><span><span class="keyword">module</span> CSE</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.CSE</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-CSEgen"><a href="#module-CSEgen" class="anchor"></a><code><span><span class="keyword">module</span> CSEgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.CSEgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-CamlinternalMenhirLib"><a href="#module-CamlinternalMenhirLib" class="anchor"></a><code><span><span class="keyword">module</span> CamlinternalMenhirLib</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.CamlinternalMenhirLib</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ccomp"><a href="#module-Ccomp" class="anchor"></a><code><span><span class="keyword">module</span> Ccomp</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ccomp</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Clambda"><a href="#module-Clambda" class="anchor"></a><code><span><span class="keyword">module</span> Clambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Clambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Clambda_primitives"><a href="#module-Clambda_primitives" class="anchor"></a><code><span><span class="keyword">module</span> Clambda_primitives</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Clambda_primitives</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Clflags"><a href="#module-Clflags" class="anchor"></a><code><span><span class="keyword">module</span> Clflags</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Clflags</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure"><a href="#module-Closure" class="anchor"></a><code><span><span class="keyword">module</span> Closure</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_conversion"><a href="#module-Closure_conversion" class="anchor"></a><code><span><span class="keyword">module</span> Closure_conversion</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_conversion</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_conversion_aux"><a href="#module-Closure_conversion_aux" class="anchor"></a><code><span><span class="keyword">module</span> Closure_conversion_aux</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_conversion_aux</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_element"><a href="#module-Closure_element" class="anchor"></a><code><span><span class="keyword">module</span> Closure_element</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_element</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_id"><a href="#module-Closure_id" class="anchor"></a><code><span><span class="keyword">module</span> Closure_id</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_id</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_middle_end"><a href="#module-Closure_middle_end" class="anchor"></a><code><span><span class="keyword">module</span> Closure_middle_end</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_middle_end</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_offsets"><a href="#module-Closure_offsets" class="anchor"></a><code><span><span class="keyword">module</span> Closure_offsets</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_offsets</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure_origin"><a href="#module-Closure_origin" class="anchor"></a><code><span><span class="keyword">module</span> Closure_origin</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Closure_origin</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmi_format"><a href="#module-Cmi_format" class="anchor"></a><code><span><span class="keyword">module</span> Cmi_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmi_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmm"><a href="#module-Cmm" class="anchor"></a><code><span><span class="keyword">module</span> Cmm</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmm</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmm_helpers"><a href="#module-Cmm_helpers" class="anchor"></a><code><span><span class="keyword">module</span> Cmm_helpers</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmm_helpers</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmm_invariants"><a href="#module-Cmm_invariants" class="anchor"></a><code><span><span class="keyword">module</span> Cmm_invariants</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmm_invariants</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmmgen"><a href="#module-Cmmgen" class="anchor"></a><code><span><span class="keyword">module</span> Cmmgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmmgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmmgen_state"><a href="#module-Cmmgen_state" class="anchor"></a><code><span><span class="keyword">module</span> Cmmgen_state</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmmgen_state</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmo_format"><a href="#module-Cmo_format" class="anchor"></a><code><span><span class="keyword">module</span> Cmo_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmo_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmt2annot"><a href="#module-Cmt2annot" class="anchor"></a><code><span><span class="keyword">module</span> Cmt2annot</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmt2annot</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmt_format"><a href="#module-Cmt_format" class="anchor"></a><code><span><span class="keyword">module</span> Cmt_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmt_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmx_format"><a href="#module-Cmx_format" class="anchor"></a><code><span><span class="keyword">module</span> Cmx_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmx_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Cmxs_format"><a href="#module-Cmxs_format" class="anchor"></a><code><span><span class="keyword">module</span> Cmxs_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Cmxs_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Coloring"><a href="#module-Coloring" class="anchor"></a><code><span><span class="keyword">module</span> Coloring</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Coloring</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Comballoc"><a href="#module-Comballoc" class="anchor"></a><code><span><span class="keyword">module</span> Comballoc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Comballoc</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compenv"><a href="#module-Compenv" class="anchor"></a><code><span><span class="keyword">module</span> Compenv</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compenv</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compilation_unit"><a href="#module-Compilation_unit" class="anchor"></a><code><span><span class="keyword">module</span> Compilation_unit</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compilation_unit</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compile"><a href="#module-Compile" class="anchor"></a><code><span><span class="keyword">module</span> Compile</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compile</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compile_common"><a href="#module-Compile_common" class="anchor"></a><code><span><span class="keyword">module</span> Compile_common</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compile_common</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compilenv"><a href="#module-Compilenv" class="anchor"></a><code><span><span class="keyword">module</span> Compilenv</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compilenv</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compmisc"><a href="#module-Compmisc" class="anchor"></a><code><span><span class="keyword">module</span> Compmisc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compmisc</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Compression"><a href="#module-Compression" class="anchor"></a><code><span><span class="keyword">module</span> Compression</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Compression</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Config"><a href="#module-Config" class="anchor"></a><code><span><span class="keyword">module</span> Config</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Config</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Config_boot"><a href="#module-Config_boot" class="anchor"></a><code><span><span class="keyword">module</span> Config_boot</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Config_boot</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Config_main"><a href="#module-Config_main" class="anchor"></a><code><span><span class="keyword">module</span> Config_main</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Config_main</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Consistbl"><a href="#module-Consistbl" class="anchor"></a><code><span><span class="keyword">module</span> Consistbl</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Consistbl</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Convert_primitives"><a href="#module-Convert_primitives" class="anchor"></a><code><span><span class="keyword">module</span> Convert_primitives</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Convert_primitives</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ctype"><a href="#module-Ctype" class="anchor"></a><code><span><span class="keyword">module</span> Ctype</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ctype</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Dataflow"><a href="#module-Dataflow" class="anchor"></a><code><span><span class="keyword">module</span> Dataflow</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Dataflow</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Datarepr"><a href="#module-Datarepr" class="anchor"></a><code><span><span class="keyword">module</span> Datarepr</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Datarepr</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Deadcode"><a href="#module-Deadcode" class="anchor"></a><code><span><span class="keyword">module</span> Deadcode</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Deadcode</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Debuginfo"><a href="#module-Debuginfo" class="anchor"></a><code><span><span class="keyword">module</span> Debuginfo</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Debuginfo</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Depend"><a href="#module-Depend" class="anchor"></a><code><span><span class="keyword">module</span> Depend</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Depend</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Diffing"><a href="#module-Diffing" class="anchor"></a><code><span><span class="keyword">module</span> Diffing</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Diffing</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Diffing_with_keys"><a href="#module-Diffing_with_keys" class="anchor"></a><code><span><span class="keyword">module</span> Diffing_with_keys</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Diffing_with_keys</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Dll"><a href="#module-Dll" class="anchor"></a><code><span><span class="keyword">module</span> Dll</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Dll</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Domainstate"><a href="#module-Domainstate" class="anchor"></a><code><span><span class="keyword">module</span> Domainstate</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Domainstate</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Effect_analysis"><a href="#module-Effect_analysis" class="anchor"></a><code><span><span class="keyword">module</span> Effect_analysis</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Effect_analysis</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Emit"><a href="#module-Emit" class="anchor"></a><code><span><span class="keyword">module</span> Emit</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Emit</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Emitaux"><a href="#module-Emitaux" class="anchor"></a><code><span><span class="keyword">module</span> Emitaux</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Emitaux</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Emitcode"><a href="#module-Emitcode" class="anchor"></a><code><span><span class="keyword">module</span> Emitcode</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Emitcode</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Emitenv"><a href="#module-Emitenv" class="anchor"></a><code><span><span class="keyword">module</span> Emitenv</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Emitenv</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Env"><a href="#module-Env" class="anchor"></a><code><span><span class="keyword">module</span> Env</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Env</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Envaux"><a href="#module-Envaux" class="anchor"></a><code><span><span class="keyword">module</span> Envaux</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Envaux</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Errors"><a href="#module-Errors" class="anchor"></a><code><span><span class="keyword">module</span> Errors</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Errors</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Errortrace"><a href="#module-Errortrace" class="anchor"></a><code><span><span class="keyword">module</span> Errortrace</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Errortrace</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Export_id"><a href="#module-Export_id" class="anchor"></a><code><span><span class="keyword">module</span> Export_id</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Export_id</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Export_info"><a href="#module-Export_info" class="anchor"></a><code><span><span class="keyword">module</span> Export_info</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Export_info</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Export_info_for_pack"><a href="#module-Export_info_for_pack" class="anchor"></a><code><span><span class="keyword">module</span> Export_info_for_pack</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Export_info_for_pack</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Expunge"><a href="#module-Expunge" class="anchor"></a><code><span><span class="keyword">module</span> Expunge</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Expunge</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Extract_projections"><a href="#module-Extract_projections" class="anchor"></a><code><span><span class="keyword">module</span> Extract_projections</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Extract_projections</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Find_recursive_functions"><a href="#module-Find_recursive_functions" class="anchor"></a><code><span><span class="keyword">module</span> Find_recursive_functions</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Find_recursive_functions</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda"><a href="#module-Flambda" class="anchor"></a><code><span><span class="keyword">module</span> Flambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda_invariants"><a href="#module-Flambda_invariants" class="anchor"></a><code><span><span class="keyword">module</span> Flambda_invariants</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda_invariants</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda_iterators"><a href="#module-Flambda_iterators" class="anchor"></a><code><span><span class="keyword">module</span> Flambda_iterators</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda_iterators</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda_middle_end"><a href="#module-Flambda_middle_end" class="anchor"></a><code><span><span class="keyword">module</span> Flambda_middle_end</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda_middle_end</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda_to_clambda"><a href="#module-Flambda_to_clambda" class="anchor"></a><code><span><span class="keyword">module</span> Flambda_to_clambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda_to_clambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Flambda_utils"><a href="#module-Flambda_utils" class="anchor"></a><code><span><span class="keyword">module</span> Flambda_utils</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Flambda_utils</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Freshening"><a href="#module-Freshening" class="anchor"></a><code><span><span class="keyword">module</span> Freshening</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Freshening</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Genprintval"><a href="#module-Genprintval" class="anchor"></a><code><span><span class="keyword">module</span> Genprintval</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Genprintval</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Id_types"><a href="#module-Id_types" class="anchor"></a><code><span><span class="keyword">module</span> Id_types</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Id_types</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ident"><a href="#module-Ident" class="anchor"></a><code><span><span class="keyword">module</span> Ident</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ident</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Import_approx"><a href="#module-Import_approx" class="anchor"></a><code><span><span class="keyword">module</span> Import_approx</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Import_approx</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Includeclass"><a href="#module-Includeclass" class="anchor"></a><code><span><span class="keyword">module</span> Includeclass</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Includeclass</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Includecore"><a href="#module-Includecore" class="anchor"></a><code><span><span class="keyword">module</span> Includecore</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Includecore</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Includemod"><a href="#module-Includemod" class="anchor"></a><code><span><span class="keyword">module</span> Includemod</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Includemod</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Includemod_errorprinter"><a href="#module-Includemod_errorprinter" class="anchor"></a><code><span><span class="keyword">module</span> Includemod_errorprinter</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Includemod_errorprinter</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inconstant_idents"><a href="#module-Inconstant_idents" class="anchor"></a><code><span><span class="keyword">module</span> Inconstant_idents</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inconstant_idents</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Initialize_symbol_to_let_symbol"><a href="#module-Initialize_symbol_to_let_symbol" class="anchor"></a><code><span><span class="keyword">module</span> Initialize_symbol_to_let_symbol</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Initialize_symbol_to_let_symbol</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inline_and_simplify"><a href="#module-Inline_and_simplify" class="anchor"></a><code><span><span class="keyword">module</span> Inline_and_simplify</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inline_and_simplify</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inline_and_simplify_aux"><a href="#module-Inline_and_simplify_aux" class="anchor"></a><code><span><span class="keyword">module</span> Inline_and_simplify_aux</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inline_and_simplify_aux</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_cost"><a href="#module-Inlining_cost" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_cost</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_cost</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_decision"><a href="#module-Inlining_decision" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_decision</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_decision</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_decision_intf"><a href="#module-Inlining_decision_intf" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_decision_intf</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_decision_intf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_stats"><a href="#module-Inlining_stats" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_stats</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_stats</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_stats_types"><a href="#module-Inlining_stats_types" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_stats_types</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_stats_types</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Inlining_transforms"><a href="#module-Inlining_transforms" class="anchor"></a><code><span><span class="keyword">module</span> Inlining_transforms</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Inlining_transforms</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Instruct"><a href="#module-Instruct" class="anchor"></a><code><span><span class="keyword">module</span> Instruct</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Instruct</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Int_replace_polymorphic_compare"><a href="#module-Int_replace_polymorphic_compare" class="anchor"></a><code><span><span class="keyword">module</span> Int_replace_polymorphic_compare</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Int_replace_polymorphic_compare</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Interf"><a href="#module-Interf" class="anchor"></a><code><span><span class="keyword">module</span> Interf</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Interf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Internal_variable_names"><a href="#module-Internal_variable_names" class="anchor"></a><code><span><span class="keyword">module</span> Internal_variable_names</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Internal_variable_names</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Interval"><a href="#module-Interval" class="anchor"></a><code><span><span class="keyword">module</span> Interval</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Interval</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Invariant_params"><a href="#module-Invariant_params" class="anchor"></a><code><span><span class="keyword">module</span> Invariant_params</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Invariant_params</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Lambda"><a href="#module-Lambda" class="anchor"></a><code><span><span class="keyword">module</span> Lambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Lazy_backtrack"><a href="#module-Lazy_backtrack" class="anchor"></a><code><span><span class="keyword">module</span> Lazy_backtrack</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lazy_backtrack</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Lift_code"><a href="#module-Lift_code" class="anchor"></a><code><span><span class="keyword">module</span> Lift_code</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lift_code</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Lift_constants"><a href="#module-Lift_constants" class="anchor"></a><code><span><span class="keyword">module</span> Lift_constants</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lift_constants</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Lift_let_to_initialize_symbol"><a href="#module-Lift_let_to_initialize_symbol" class="anchor"></a><code><span><span class="keyword">module</span> Lift_let_to_initialize_symbol</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Lift_let_to_initialize_symbol</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Linear"><a href="#module-Linear" class="anchor"></a><code><span><span class="keyword">module</span> Linear</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Linear</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Linear_format"><a href="#module-Linear_format" class="anchor"></a><code><span><span class="keyword">module</span> Linear_format</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Linear_format</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Linearize"><a href="#module-Linearize" class="anchor"></a><code><span><span class="keyword">module</span> Linearize</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Linearize</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Linkage_name"><a href="#module-Linkage_name" class="anchor"></a><code><span><span class="keyword">module</span> Linkage_name</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Linkage_name</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Linscan"><a href="#module-Linscan" class="anchor"></a><code><span><span class="keyword">module</span> Linscan</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Linscan</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Liveness"><a href="#module-Liveness" class="anchor"></a><code><span><span class="keyword">module</span> Liveness</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Liveness</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Load_path"><a href="#module-Load_path" class="anchor"></a><code><span><span class="keyword">module</span> Load_path</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Load_path</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Local_store"><a href="#module-Local_store" class="anchor"></a><code><span><span class="keyword">module</span> Local_store</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Local_store</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Mach"><a href="#module-Mach" class="anchor"></a><code><span><span class="keyword">module</span> Mach</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Mach</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Main"><a href="#module-Main" class="anchor"></a><code><span><span class="keyword">module</span> Main</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Main</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Main_args"><a href="#module-Main_args" class="anchor"></a><code><span><span class="keyword">module</span> Main_args</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Main_args</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Maindriver"><a href="#module-Maindriver" class="anchor"></a><code><span><span class="keyword">module</span> Maindriver</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Maindriver</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Makedepend"><a href="#module-Makedepend" class="anchor"></a><code><span><span class="keyword">module</span> Makedepend</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Makedepend</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Matching"><a href="#module-Matching" class="anchor"></a><code><span><span class="keyword">module</span> Matching</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Matching</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Meta"><a href="#module-Meta" class="anchor"></a><code><span><span class="keyword">module</span> Meta</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Meta</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Misc"><a href="#module-Misc" class="anchor"></a><code><span><span class="keyword">module</span> Misc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Misc</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Mtype"><a href="#module-Mtype" class="anchor"></a><code><span><span class="keyword">module</span> Mtype</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Mtype</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Mutable_variable"><a href="#module-Mutable_variable" class="anchor"></a><code><span><span class="keyword">module</span> Mutable_variable</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Mutable_variable</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Numbers"><a href="#module-Numbers" class="anchor"></a><code><span><span class="keyword">module</span> Numbers</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Numbers</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Opcodes"><a href="#module-Opcodes" class="anchor"></a><code><span><span class="keyword">module</span> Opcodes</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Opcodes</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Oprint"><a href="#module-Oprint" class="anchor"></a><code><span><span class="keyword">module</span> Oprint</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Oprint</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Optcompile"><a href="#module-Optcompile" class="anchor"></a><code><span><span class="keyword">module</span> Optcompile</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Optcompile</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Opterrors"><a href="#module-Opterrors" class="anchor"></a><code><span><span class="keyword">module</span> Opterrors</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Opterrors</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Optmain"><a href="#module-Optmain" class="anchor"></a><code><span><span class="keyword">module</span> Optmain</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Optmain</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Optmaindriver"><a href="#module-Optmaindriver" class="anchor"></a><code><span><span class="keyword">module</span> Optmaindriver</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Optmaindriver</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Outcometree"><a href="#module-Outcometree" class="anchor"></a><code><span><span class="keyword">module</span> Outcometree</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Outcometree</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Parameter"><a href="#module-Parameter" class="anchor"></a><code><span><span class="keyword">module</span> Parameter</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Parameter</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Parmatch"><a href="#module-Parmatch" class="anchor"></a><code><span><span class="keyword">module</span> Parmatch</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Parmatch</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Parser"><a href="#module-Parser" class="anchor"></a><code><span><span class="keyword">module</span> Parser</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Parser</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Pass_wrapper"><a href="#module-Pass_wrapper" class="anchor"></a><code><span><span class="keyword">module</span> Pass_wrapper</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Pass_wrapper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Path"><a href="#module-Path" class="anchor"></a><code><span><span class="keyword">module</span> Path</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Path</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Patterns"><a href="#module-Patterns" class="anchor"></a><code><span><span class="keyword">module</span> Patterns</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Patterns</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Persistent_env"><a href="#module-Persistent_env" class="anchor"></a><code><span><span class="keyword">module</span> Persistent_env</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Persistent_env</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Polling"><a href="#module-Polling" class="anchor"></a><code><span><span class="keyword">module</span> Polling</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Polling</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Pparse"><a href="#module-Pparse" class="anchor"></a><code><span><span class="keyword">module</span> Pparse</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Pparse</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Predef"><a href="#module-Predef" class="anchor"></a><code><span><span class="keyword">module</span> Predef</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Predef</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Primitive"><a href="#module-Primitive" class="anchor"></a><code><span><span class="keyword">module</span> Primitive</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Primitive</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printast"><a href="#module-Printast" class="anchor"></a><code><span><span class="keyword">module</span> Printast</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printclambda"><a href="#module-Printclambda" class="anchor"></a><code><span><span class="keyword">module</span> Printclambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printclambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printclambda_primitives"><a href="#module-Printclambda_primitives" class="anchor"></a><code><span><span class="keyword">module</span> Printclambda_primitives</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printclambda_primitives</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printcmm"><a href="#module-Printcmm" class="anchor"></a><code><span><span class="keyword">module</span> Printcmm</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printcmm</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printinstr"><a href="#module-Printinstr" class="anchor"></a><code><span><span class="keyword">module</span> Printinstr</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printinstr</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printlambda"><a href="#module-Printlambda" class="anchor"></a><code><span><span class="keyword">module</span> Printlambda</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printlambda</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printlinear"><a href="#module-Printlinear" class="anchor"></a><code><span><span class="keyword">module</span> Printlinear</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printlinear</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printmach"><a href="#module-Printmach" class="anchor"></a><code><span><span class="keyword">module</span> Printmach</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printmach</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printpat"><a href="#module-Printpat" class="anchor"></a><code><span><span class="keyword">module</span> Printpat</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printpat</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printtyp"><a href="#module-Printtyp" class="anchor"></a><code><span><span class="keyword">module</span> Printtyp</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printtyp</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Printtyped"><a href="#module-Printtyped" class="anchor"></a><code><span><span class="keyword">module</span> Printtyped</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Printtyped</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Proc"><a href="#module-Proc" class="anchor"></a><code><span><span class="keyword">module</span> Proc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Proc</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Profile"><a href="#module-Profile" class="anchor"></a><code><span><span class="keyword">module</span> Profile</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Profile</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Projection"><a href="#module-Projection" class="anchor"></a><code><span><span class="keyword">module</span> Projection</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Projection</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Rec_check"><a href="#module-Rec_check" class="anchor"></a><code><span><span class="keyword">module</span> Rec_check</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Rec_check</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ref_to_variables"><a href="#module-Ref_to_variables" class="anchor"></a><code><span><span class="keyword">module</span> Ref_to_variables</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Ref_to_variables</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Reg"><a href="#module-Reg" class="anchor"></a><code><span><span class="keyword">module</span> Reg</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Reg</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Reload"><a href="#module-Reload" class="anchor"></a><code><span><span class="keyword">module</span> Reload</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Reload</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Reloadgen"><a href="#module-Reloadgen" class="anchor"></a><code><span><span class="keyword">module</span> Reloadgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Reloadgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Remove_free_vars_equal_to_args"><a href="#module-Remove_free_vars_equal_to_args" class="anchor"></a><code><span><span class="keyword">module</span> Remove_free_vars_equal_to_args</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Remove_free_vars_equal_to_args</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Remove_unused_arguments"><a href="#module-Remove_unused_arguments" class="anchor"></a><code><span><span class="keyword">module</span> Remove_unused_arguments</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Remove_unused_arguments</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Remove_unused_closure_vars"><a href="#module-Remove_unused_closure_vars" class="anchor"></a><code><span><span class="keyword">module</span> Remove_unused_closure_vars</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Remove_unused_closure_vars</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Remove_unused_program_constructs"><a href="#module-Remove_unused_program_constructs" class="anchor"></a><code><span><span class="keyword">module</span> Remove_unused_program_constructs</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Remove_unused_program_constructs</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Runtimedef"><a href="#module-Runtimedef" class="anchor"></a><code><span><span class="keyword">module</span> Runtimedef</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Runtimedef</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Schedgen"><a href="#module-Schedgen" class="anchor"></a><code><span><span class="keyword">module</span> Schedgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Schedgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Scheduling"><a href="#module-Scheduling" class="anchor"></a><code><span><span class="keyword">module</span> Scheduling</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Scheduling</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Selectgen"><a href="#module-Selectgen" class="anchor"></a><code><span><span class="keyword">module</span> Selectgen</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Selectgen</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Selection"><a href="#module-Selection" class="anchor"></a><code><span><span class="keyword">module</span> Selection</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Selection</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Semantics_of_primitives"><a href="#module-Semantics_of_primitives" class="anchor"></a><code><span><span class="keyword">module</span> Semantics_of_primitives</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Semantics_of_primitives</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Set_of_closures_id"><a href="#module-Set_of_closures_id" class="anchor"></a><code><span><span class="keyword">module</span> Set_of_closures_id</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Set_of_closures_id</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Set_of_closures_origin"><a href="#module-Set_of_closures_origin" class="anchor"></a><code><span><span class="keyword">module</span> Set_of_closures_origin</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Set_of_closures_origin</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Shape"><a href="#module-Shape" class="anchor"></a><code><span><span class="keyword">module</span> Shape</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Shape</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Share_constants"><a href="#module-Share_constants" class="anchor"></a><code><span><span class="keyword">module</span> Share_constants</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Share_constants</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Signature_group"><a href="#module-Signature_group" class="anchor"></a><code><span><span class="keyword">module</span> Signature_group</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Signature_group</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simple_value_approx"><a href="#module-Simple_value_approx" class="anchor"></a><code><span><span class="keyword">module</span> Simple_value_approx</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simple_value_approx</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simplif"><a href="#module-Simplif" class="anchor"></a><code><span><span class="keyword">module</span> Simplif</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simplif</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simplify_boxed_integer_ops"><a href="#module-Simplify_boxed_integer_ops" class="anchor"></a><code><span><span class="keyword">module</span> Simplify_boxed_integer_ops</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simplify_boxed_integer_ops</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simplify_boxed_integer_ops_intf"><a href="#module-Simplify_boxed_integer_ops_intf" class="anchor"></a><code><span><span class="keyword">module</span> Simplify_boxed_integer_ops_intf</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simplify_boxed_integer_ops_intf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simplify_common"><a href="#module-Simplify_common" class="anchor"></a><code><span><span class="keyword">module</span> Simplify_common</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simplify_common</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Simplify_primitives"><a href="#module-Simplify_primitives" class="anchor"></a><code><span><span class="keyword">module</span> Simplify_primitives</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Simplify_primitives</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Spill"><a href="#module-Spill" class="anchor"></a><code><span><span class="keyword">module</span> Spill</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Spill</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Split"><a href="#module-Split" class="anchor"></a><code><span><span class="keyword">module</span> Split</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Split</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Static_exception"><a href="#module-Static_exception" class="anchor"></a><code><span><span class="keyword">module</span> Static_exception</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Static_exception</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Strmatch"><a href="#module-Strmatch" class="anchor"></a><code><span><span class="keyword">module</span> Strmatch</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Strmatch</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Strongly_connected_components"><a href="#module-Strongly_connected_components" class="anchor"></a><code><span><span class="keyword">module</span> Strongly_connected_components</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Strongly_connected_components</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Stypes"><a href="#module-Stypes" class="anchor"></a><code><span><span class="keyword">module</span> Stypes</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Stypes</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Subst"><a href="#module-Subst" class="anchor"></a><code><span><span class="keyword">module</span> Subst</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Subst</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Switch"><a href="#module-Switch" class="anchor"></a><code><span><span class="keyword">module</span> Switch</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Switch</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Symbol"><a href="#module-Symbol" class="anchor"></a><code><span><span class="keyword">module</span> Symbol</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Symbol</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Symtable"><a href="#module-Symtable" class="anchor"></a><code><span><span class="keyword">module</span> Symtable</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Symtable</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tag"><a href="#module-Tag" class="anchor"></a><code><span><span class="keyword">module</span> Tag</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Tag</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Targetint"><a href="#module-Targetint" class="anchor"></a><code><span><span class="keyword">module</span> Targetint</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Targetint</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tast_iterator"><a href="#module-Tast_iterator" class="anchor"></a><code><span><span class="keyword">module</span> Tast_iterator</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Tast_iterator</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tast_mapper"><a href="#module-Tast_mapper" class="anchor"></a><code><span><span class="keyword">module</span> Tast_mapper</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Tast_mapper</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Terminfo"><a href="#module-Terminfo" class="anchor"></a><code><span><span class="keyword">module</span> Terminfo</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Terminfo</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tmc"><a href="#module-Tmc" class="anchor"></a><code><span><span class="keyword">module</span> Tmc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Tmc</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topcommon"><a href="#module-Topcommon" class="anchor"></a><code><span><span class="keyword">module</span> Topcommon</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topcommon</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topdirs"><a href="#module-Topdirs" class="anchor"></a><code><span><span class="keyword">module</span> Topdirs</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topdirs</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topeval"><a href="#module-Topeval" class="anchor"></a><code><span><span class="keyword">module</span> Topeval</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topeval</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Tophooks"><a href="#module-Tophooks" class="anchor"></a><code><span><span class="keyword">module</span> Tophooks</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Tophooks</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Toploop"><a href="#module-Toploop" class="anchor"></a><code><span><span class="keyword">module</span> Toploop</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Toploop</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topmain"><a href="#module-Topmain" class="anchor"></a><code><span><span class="keyword">module</span> Topmain</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topmain</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topprinters"><a href="#module-Topprinters" class="anchor"></a><code><span><span class="keyword">module</span> Topprinters</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topprinters</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Topstart"><a href="#module-Topstart" class="anchor"></a><code><span><span class="keyword">module</span> Topstart</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Topstart</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Trace"><a href="#module-Trace" class="anchor"></a><code><span><span class="keyword">module</span> Trace</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Trace</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translattribute"><a href="#module-Translattribute" class="anchor"></a><code><span><span class="keyword">module</span> Translattribute</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translattribute</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translclass"><a href="#module-Translclass" class="anchor"></a><code><span><span class="keyword">module</span> Translclass</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translclass</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translcore"><a href="#module-Translcore" class="anchor"></a><code><span><span class="keyword">module</span> Translcore</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translcore</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translmod"><a href="#module-Translmod" class="anchor"></a><code><span><span class="keyword">module</span> Translmod</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translmod</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translobj"><a href="#module-Translobj" class="anchor"></a><code><span><span class="keyword">module</span> Translobj</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translobj</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Translprim"><a href="#module-Translprim" class="anchor"></a><code><span><span class="keyword">module</span> Translprim</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Translprim</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Traverse_for_exported_symbols"><a href="#module-Traverse_for_exported_symbols" class="anchor"></a><code><span><span class="keyword">module</span> Traverse_for_exported_symbols</span><span> =
<a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Traverse_for_exported_symbols</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Type_immediacy"><a href="#module-Type_immediacy" class="anchor"></a><code><span><span class="keyword">module</span> Type_immediacy</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Type_immediacy</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typeclass"><a href="#module-Typeclass" class="anchor"></a><code><span><span class="keyword">module</span> Typeclass</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typeclass</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typecore"><a href="#module-Typecore" class="anchor"></a><code><span><span class="keyword">module</span> Typecore</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typecore</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl"><a href="#module-Typedecl" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl_immediacy"><a href="#module-Typedecl_immediacy" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl_immediacy</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl_immediacy</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl_properties"><a href="#module-Typedecl_properties" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl_properties</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl_properties</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl_separability"><a href="#module-Typedecl_separability" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl_separability</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl_separability</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl_unboxed"><a href="#module-Typedecl_unboxed" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl_unboxed</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl_unboxed</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedecl_variance"><a href="#module-Typedecl_variance" class="anchor"></a><code><span><span class="keyword">module</span> Typedecl_variance</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedecl_variance</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typedtree"><a href="#module-Typedtree" class="anchor"></a><code><span><span class="keyword">module</span> Typedtree</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typedtree</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typemod"><a href="#module-Typemod" class="anchor"></a><code><span><span class="keyword">module</span> Typemod</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typemod</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typeopt"><a href="#module-Typeopt" class="anchor"></a><code><span><span class="keyword">module</span> Typeopt</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typeopt</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Types"><a href="#module-Types" class="anchor"></a><code><span><span class="keyword">module</span> Types</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Types</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Typetexp"><a href="#module-Typetexp" class="anchor"></a><code><span><span class="keyword">module</span> Typetexp</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Typetexp</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Un_anf"><a href="#module-Un_anf" class="anchor"></a><code><span><span class="keyword">module</span> Un_anf</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Un_anf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Unbox_closures"><a href="#module-Unbox_closures" class="anchor"></a><code><span><span class="keyword">module</span> Unbox_closures</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Unbox_closures</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Unbox_free_vars_of_closures"><a href="#module-Unbox_free_vars_of_closures" class="anchor"></a><code><span><span class="keyword">module</span> Unbox_free_vars_of_closures</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Unbox_free_vars_of_closures</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Unbox_specialised_args"><a href="#module-Unbox_specialised_args" class="anchor"></a><code><span><span class="keyword">module</span> Unbox_specialised_args</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Unbox_specialised_args</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Untypeast"><a href="#module-Untypeast" class="anchor"></a><code><span><span class="keyword">module</span> Untypeast</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Untypeast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Var_within_closure"><a href="#module-Var_within_closure" class="anchor"></a><code><span><span class="keyword">module</span> Var_within_closure</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Var_within_closure</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Variable"><a href="#module-Variable" class="anchor"></a><code><span><span class="keyword">module</span> Variable</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Variable</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Warnings"><a href="#module-Warnings" class="anchor"></a><code><span><span class="keyword">module</span> Warnings</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.Warnings</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-X86_ast"><a href="#module-X86_ast" class="anchor"></a><code><span><span class="keyword">module</span> X86_ast</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.X86_ast</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-X86_dsl"><a href="#module-X86_dsl" class="anchor"></a><code><span><span class="keyword">module</span> X86_dsl</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.X86_dsl</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-X86_gas"><a href="#module-X86_gas" class="anchor"></a><code><span><span class="keyword">module</span> X86_gas</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.X86_gas</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-X86_masm"><a href="#module-X86_masm" class="anchor"></a><code><span><span class="keyword">module</span> X86_masm</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.X86_masm</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-X86_proc"><a href="#module-X86_proc" class="anchor"></a><code><span><span class="keyword">module</span> X86_proc</span><span> = <a href="../../ocaml-compiler-libs/Ocaml_shadow/Do_not_use_directly/index.html">Ocaml_shadow.X86_proc</a></span></code></div></div></details></div></details></div></div></body></html>