mirror of
https://github.com/ocaml-tracing/ocaml-trace.git
synced 2026-03-09 12:23:32 -04:00
70 lines
No EOL
304 KiB
HTML
70 lines
No EOL
304 KiB
HTML
<!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> » 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><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">-></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">-></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">-></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">-></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">-></span></span>
|
||
<span>f:
|
||
<span>(<span>loc:<a href="Location/index.html#type-t">Location.t</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||
<a href="../Astlib/Ast_500/Parsetree/index.html#type-core_type">Astlib.Ast_500.Parsetree.core_type</a>)</span> <span class="arrow">-></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">-></span></span> <span>unit <span class="arrow">-></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 = "_x"</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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></span></span>
|
||
<span>string <span class="arrow">-></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">-></span></span>
|
||
<span>sig_:bool <span class="arrow">-></span></span>
|
||
<span>[> `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">-></span></span>
|
||
<span>sg_name:string <span class="arrow">-></span></span>
|
||
<span>handle_polymorphic_variant:bool <span class="arrow">-></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">-></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:"Foo" ~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">-></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 -> ...</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 -> ...</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>"constant"</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 -> 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 -> 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 -> 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 >= 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>< l1:T1; ...; ln:Tn ></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:T1; ...; ln:Tn; .. ></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>[> `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>[< `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>[< `A|`B > `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 ["X";"Y"]</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 & .. & Tn</code> when <code>b</code> is <code>false</code> and <code>l</code> is <code>[T1;...Tn]</code>,</li><li><code>`A of & T1 & .. & 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>&</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>"true"</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 >= 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 > 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 "P"</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 "P"), 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>"true"</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 -> E1 | ... | Pn -> 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 -> 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 -> 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 -> 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) -> 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 -> 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 > 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 -> E1 | ... | Pn -> 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 -> E1 | ... | Pn -> 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 >= 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 > 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 <- 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 :> T)</code> when <code>from</code> is <code>None</code>,</li><li><code>(E : T0 :> 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 <- 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>{< x1 = E1; ...; xn = En >}</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) -> 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 -> E)</code> or <code>(P when E0 -> 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 = "s1" ... "sn"</code> when <a href="#type-value_description.pval_prim"><code>pval_prim</code></a> is <code>["s1";..."sn"]</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 -> 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: {...} -> 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 -> 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 -> 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 -> 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 -> 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 -> 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 "class type" 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 -> 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 -> 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 -> 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) -> 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 > 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) -> 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 = "s1" ... "sn"</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 "used identifier shadowing" 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) -> 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 = "s1" ... "sn" </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> |