Module Ocaml_typing.PrinttypSource

Sourceval ident : Format.formatter -> Ident.t -> unit
Sourceval namespaced_ident : Shape.Sig_component_kind.t -> Ident.t -> string
Sourceval tree_of_path : Path.t -> Outcometree.out_ident
Sourceval path : Format.formatter -> Path.t -> unit
Sourceval string_of_path : Path.t -> string
Sourceval type_path : Format.formatter -> Path.t -> unit

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

Sourcemodule Out_name : sig ... end
type namespace := Shape.Sig_component_kind.t option
Sourceval strings_of_paths : namespace -> Path.t list -> string list

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

Sourceval raw_type_expr : Format.formatter -> Types.type_expr -> unit
Sourceval string_of_label : Ocaml_parsing.Asttypes.arg_label -> string
Sourceval wrap_printing_env : ?error:bool -> Env.t -> (unit -> 'a) -> 'a
Sourceval shorten_type_path : Env.t -> Path.t -> Path.t
Sourceval shorten_module_type_path : Env.t -> Path.t -> Path.t
Sourceval shorten_module_path : Env.t -> Path.t -> Path.t
Sourceval shorten_class_type_path : Env.t -> Path.t -> Path.t
Sourcemodule Naming_context : sig ... end
Sourcemodule 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

Sourceval reset : unit -> unit
Sourceval type_expr : Format.formatter -> Types.type_expr -> unit

Print out a type. This will pick names for type variables, and will not reuse names for common type variables shared across multiple type expressions. (It will also reset the printing state, which matters for other type formatters such as prepared_type_expr.) If you want multiple types to use common names for type variables, see prepare_for_printing and prepared_type_expr.

Sourceval prepare_for_printing : Types.type_expr list -> unit

prepare_for_printing resets the global printing environment, a la reset, and prepares the types for printing by reserving names and marking loops. Any type variables that are shared between multiple types in the input list will be given the same name when printed with prepared_type_expr.

Sourceval add_type_to_preparation : Types.type_expr -> unit

add_type_to_preparation ty extend a previous type expression preparation to the type expression ty

Sourceval prepared_type_expr : Format.formatter -> Types.type_expr -> unit

The function prepared_type_expr is a less-safe but more-flexible version of type_expr that should only be called on type_exprs that have been passed to prepare_for_printing. Unlike type_expr, this function does no extra work before printing a type; in particular, this means that any loops in the type expression may cause a stack overflow (see #8860) since this function does not mark any loops. The benefit of this is that if multiple type expressions are prepared simultaneously and then printed with prepared_type_expr, they will use the same names for the same type variables.

Sourceval constructor_arguments : Format.formatter -> Types.constructor_arguments -> unit
Sourceval tree_of_type_scheme : Types.type_expr -> Outcometree.out_type
Sourceval type_scheme : Format.formatter -> Types.type_expr -> unit
Sourceval prepared_type_scheme : Format.formatter -> Types.type_expr -> unit
Sourceval shared_type_scheme : Format.formatter -> Types.type_expr -> unit

shared_type_scheme is very similar to type_scheme, but does not reset the printing context first. This is intended to be used in cases where the printing should have a particularly wide context, such as documentation generators; most use cases, such as error messages, have narrower contexts for which type_scheme is better suited.

Sourceval tree_of_value_description : Ident.t -> Types.value_description -> Outcometree.out_sig_item
Sourceval value_description : Ident.t -> Format.formatter -> Types.value_description -> unit
Sourceval add_constructor_to_preparation : Types.constructor_declaration -> unit
Sourceval prepared_constructor : Format.formatter -> Types.constructor_declaration -> unit
Sourceval add_type_declaration_to_preparation : Ident.t -> Types.type_declaration -> unit
Sourceval prepared_type_declaration : Ident.t -> Format.formatter -> Types.type_declaration -> unit
Sourceval type_declaration : Ident.t -> Format.formatter -> Types.type_declaration -> unit
Sourceval add_extension_constructor_to_preparation : Types.extension_constructor -> unit
Sourceval prepared_extension_constructor : Ident.t -> Format.formatter -> Types.extension_constructor -> unit
Sourceval extension_constructor : Ident.t -> Format.formatter -> Types.extension_constructor -> unit
Sourceval extension_only_constructor : Ident.t -> Format.formatter -> Types.extension_constructor -> unit
Sourceval tree_of_module : Ident.t -> ?ellipsis:bool -> Types.module_type -> Types.rec_status -> Outcometree.out_sig_item
Sourceval modtype : Format.formatter -> Types.module_type -> unit
Sourceval signature : Format.formatter -> Types.signature -> unit
Sourceval tree_of_modtype_declaration : Ident.t -> Types.modtype_declaration -> Outcometree.out_sig_item
Sourceval 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)

Sourcetype type_or_scheme =
  1. | Type
  2. | Type_scheme
Sourceval tree_of_signature : Types.signature -> Outcometree.out_sig_item list
Sourceval modtype_declaration : Ident.t -> Format.formatter -> Types.modtype_declaration -> unit
Sourceval class_type : Format.formatter -> Types.class_type -> unit
Sourceval class_declaration : Ident.t -> Format.formatter -> Types.class_declaration -> unit
Sourceval cltype_declaration : Ident.t -> Format.formatter -> Types.class_type_declaration -> unit
Sourceval 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
Sourceval report_unification_error : Format.formatter -> Env.t -> Errortrace.unification_error -> ?type_expected_explanation:(Format.formatter -> unit) -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
Sourceval report_equality_error : Format.formatter -> type_or_scheme -> Env.t -> Errortrace.equality_error -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
Sourceval report_moregen_error : Format.formatter -> type_or_scheme -> Env.t -> Errortrace.moregen_error -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
Sourceval report_comparison_error : Format.formatter -> type_or_scheme -> Env.t -> Errortrace.comparison_error -> (Format.formatter -> unit) -> (Format.formatter -> unit) -> unit
Sourcemodule Subtype : sig ... end
Sourceval print_items : (Env.t -> Types.signature_item -> 'a option) -> Env.t -> Types.signature_item list -> (Outcometree.out_sig_item * 'a option) list
Sourceval rewrite_double_underscore_paths : Env.t -> Path.t -> Path.t
Sourceval 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