package ocaml-base-compiler

  1. Overview
  2. Docs
val longident : Format.formatter -> Longident.t -> unit
val ident : Format.formatter -> Ident.t -> unit
val tree_of_path : Path.t -> Outcometree.out_ident
val path : Format.formatter -> Path.t -> unit
val string_of_path : Path.t -> string
val type_path : Format.formatter -> Path.t -> unit

Print a type path taking account of -short-paths. Calls should be within wrap_printing_env.

module Out_name : sig ... end
type namespace =
  1. | Type
  2. | Module
  3. | Module_type
  4. | Class
  5. | Class_type
  6. | Other
    (*

    Other bypasses the unique name for identifier mechanism

    *)
val strings_of_paths : namespace -> Path.t list -> string list

Print a list of paths, using the same naming context to avoid name collisions

val raw_type_expr : Format.formatter -> Types.type_expr -> unit
val string_of_label : Asttypes.arg_label -> string
val wrap_printing_env : error:bool -> Env.t -> (unit -> 'a) -> 'a
module Naming_context : sig ... end
module Conflicts : sig ... end

The Conflicts module keeps track of conflicts arising when attributing names to identifiers and provides functions that can print explanations for these conflict in error messages

val reset : unit -> unit
val mark_loops : Types.type_expr -> unit
val reset_and_mark_loops : Types.type_expr -> unit
val reset_and_mark_loops_list : Types.type_expr list -> unit
val type_expr : Format.formatter -> Types.type_expr -> unit
val marked_type_expr : Format.formatter -> Types.type_expr -> unit

The function type_expr is the safe version of the pair (typed_expr, marked_type_expr): it takes care of marking loops in the type expression and resetting type variable names before printing. Contrarily, the function marked_type_expr should only be called on type expressions whose loops have been marked or it may stackoverflow (see #8860 for examples).

val constructor_arguments : Format.formatter -> Types.constructor_arguments -> unit
val tree_of_type_scheme : Types.type_expr -> Outcometree.out_type
val type_sch : Format.formatter -> Types.type_expr -> unit
val type_scheme : Format.formatter -> Types.type_expr -> unit
val reset_names : unit -> unit
val type_scheme_max : ?b_reset_names:bool -> Format.formatter -> Types.type_expr -> unit
val tree_of_value_description : Ident.t -> Types.value_description -> Outcometree.out_sig_item
val value_description : Ident.t -> Format.formatter -> Types.value_description -> unit
val constructor : Format.formatter -> Types.constructor_declaration -> unit
val type_declaration : Ident.t -> Format.formatter -> Types.type_declaration -> unit
val extension_constructor : Ident.t -> Format.formatter -> Types.extension_constructor -> unit
val extension_only_constructor : Ident.t -> Format.formatter -> Types.extension_constructor -> unit
val tree_of_module : Ident.t -> ?ellipsis:bool -> Types.module_type -> Types.rec_status -> Outcometree.out_sig_item
val modtype : Format.formatter -> Types.module_type -> unit
val signature : Format.formatter -> Types.signature -> unit
val tree_of_modtype_declaration : Ident.t -> Types.modtype_declaration -> Outcometree.out_sig_item
val functor_parameters : sep:(Format.formatter -> unit -> unit) -> ('b -> Format.formatter -> unit) -> (Ident.t option * 'b) list -> Format.formatter -> unit

Print a list of functor parameters while adjusting the printing environment for each functor argument.

Currently, we are disabling disambiguation for functor argument name to avoid the need to track the moving association between identifiers and syntactic names in situation like:

got: (X: sig module type T end) (Y:X.T) (X:sig module type T end) (Z:X.T) expect: (_: sig end) (Y:X.T) (_:sig end) (Z:X.T)

val tree_of_signature : Types.signature -> Outcometree.out_sig_item list
val tree_of_typexp : bool -> Types.type_expr -> Outcometree.out_type
val modtype_declaration : Ident.t -> Format.formatter -> Types.modtype_declaration -> unit
val class_type : Format.formatter -> Types.class_type -> unit
val class_declaration : Ident.t -> Format.formatter -> Types.class_declaration -> unit
val cltype_declaration : Ident.t -> Format.formatter -> Types.class_type_declaration -> unit
val type_expansion : Types.type_expr -> Format.formatter -> Types.type_expr -> unit
val report_ambiguous_type_error : Format.formatter -> Env.t -> (Path.t * Path.t) -> (Path.t * Path.t) list -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
val report_unification_error : Format.formatter -> Env.t -> Errortrace.unification Errortrace.t -> ?type_expected_explanation:(Format.formatter -> unit) -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
val report_equality_error : Format.formatter -> Env.t -> Errortrace.comparison Errortrace.t -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
val report_moregen_error : Format.formatter -> Env.t -> Errortrace.comparison Errortrace.t -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
module Subtype : sig ... end
val print_items : (Env.t -> Types.signature_item -> 'a option) -> Env.t -> Types.signature_item list -> (Outcometree.out_sig_item * 'a option) list
val rewrite_double_underscore_paths : Env.t -> Path.t -> Path.t
val printed_signature : string -> Format.formatter -> Types.signature -> unit

printed_signature sourcefile ppf sg print the signature sg of sourcefile with potential warnings for name collisions

OCaml

Innovation. Community. Security.