Module Compile_common
Common compilation pipeline between bytecode and native.
Initialization
type info={source_file : string;module_name : string;output_prefix : string;env : Env.t;ppf_dump : Stdlib.Format.formatter;tool_name : string;native : bool;}Information needed to compile a file.
val with_info : native:bool -> tool_name:string -> source_file:string -> output_prefix:string -> dump_ext:string -> (info -> 'a) -> 'awith_info ~native ~tool_name ~source_file ~output_prefix ~dump_ext kinvokes its continuationkwith aninfostructure built from its input, after initializing various global variables. This info structure and the initialized global state are not valid anymore after the continuation returns.Due to current implementation limitations in the compiler, it is unsafe to try to compile several distinct compilation units by calling
with_infoseveral times.
Interfaces
val parse_intf : info -> Parsetree.signatureparse_intf infoparses an interface (usually an.mlifile).
val typecheck_intf : info -> Parsetree.signature -> Typedtree.signaturetypecheck_intf info parsetreetypechecks an interface and returns the typedtree of the associated signature.
val emit_signature : info -> Parsetree.signature -> Typedtree.signature -> unitemit_signature info parsetree typedtreeemits the.cmifile containing the given signature.
val interface : info -> unitThe complete compilation pipeline for interfaces.
Implementations
val parse_impl : info -> Parsetree.structureparse_impl infoparses an implementation (usually an.mlfile).
val typecheck_impl : info -> Parsetree.structure -> Typedtree.structure * Typedtree.module_coerciontypecheck_impl info parsetreetypechecks an implementation and returns the typedtree of the associated module, along with a coercion against its public interface.
val implementation : info -> backend:(info -> (Typedtree.structure * Typedtree.module_coercion) -> unit) -> unitThe complete compilation pipeline for implementations.