Module Typecore
type type_forcing_context
=
|
If_conditional
|
If_no_else_branch
|
While_loop_conditional
|
While_loop_body
|
For_loop_start_index
|
For_loop_stop_index
|
For_loop_body
|
Assert_condition
|
Sequence_left_hand_side
|
When_guard
type type_expected
= private
{
ty : Types.type_expr;
explanation : type_forcing_context option;
}
val mk_expected : ?explanation:type_forcing_context -> Types.type_expr -> type_expected
val is_nonexpansive : Typedtree.expression -> bool
type existential_restriction
=
val type_binding : Env.t -> Asttypes.rec_flag -> Parsetree.value_binding list -> Annot.ident option -> Typedtree.value_binding list * Env.t
val type_let : existential_restriction -> Env.t -> Asttypes.rec_flag -> Parsetree.value_binding list -> Annot.ident option -> Typedtree.value_binding list * Env.t
val type_expression : Env.t -> Parsetree.expression -> Typedtree.expression
val type_class_arg_pattern : string -> Env.t -> Env.t -> Asttypes.arg_label -> Parsetree.pattern -> Typedtree.pattern * (Ident.t * Ident.t * Types.type_expr) list * Env.t * Env.t
val type_self_pattern : string -> Types.type_expr -> Env.t -> Env.t -> Env.t -> Parsetree.pattern -> Typedtree.pattern * (Ident.t * Types.type_expr) Types.Meths.t Stdlib.ref * (Ident.t * Asttypes.mutable_flag * Asttypes.virtual_flag * Types.type_expr) Types.Vars.t Stdlib.ref * Env.t * Env.t * Env.t
val check_partial : ?lev:int -> Env.t -> Types.type_expr -> Location.t -> Typedtree.case list -> Typedtree.partial
val type_expect : ?in_function:(Location.t * Types.type_expr) -> Env.t -> Parsetree.expression -> type_expected -> Typedtree.expression
val type_exp : Env.t -> Parsetree.expression -> Typedtree.expression
val type_approx : Env.t -> Parsetree.expression -> Types.type_expr
val type_argument : Env.t -> Parsetree.expression -> Types.type_expr -> Types.type_expr -> Typedtree.expression
val option_some : Typedtree.expression -> Typedtree.expression
val option_none : Types.type_expr -> Location.t -> Typedtree.expression
val extract_option_type : Env.t -> Types.type_expr -> Types.type_expr
val iter_pattern : (Typedtree.pattern -> unit) -> Typedtree.pattern -> unit
val generalizable : int -> Types.type_expr -> bool
val reset_delayed_checks : unit -> unit
val force_delayed_checks : unit -> unit
val name_pattern : string -> Typedtree.pattern list -> Ident.t
val name_cases : string -> Typedtree.case list -> Ident.t
val self_coercion : (Path.t * Location.t list Stdlib.ref) list Stdlib.ref
type error
=
|
Constructor_arity_mismatch of Longident.t * int * int
|
Label_mismatch of Longident.t * Ctype.Unification_trace.t
|
Pattern_type_clash of Ctype.Unification_trace.t
|
Or_pattern_type_clash of Ident.t * Ctype.Unification_trace.t
|
Multiply_bound_variable of string
|
Orpat_vars of Ident.t * Ident.t list
|
Expr_type_clash of Ctype.Unification_trace.t * type_forcing_context option
|
Apply_non_function of Types.type_expr
|
Apply_wrong_label of Asttypes.arg_label * Types.type_expr
|
Label_multiply_defined of string
|
Label_missing of Ident.t list
|
Label_not_mutable of Longident.t
|
Wrong_name of string * type_expected * string * Path.t * string * string list
|
Name_type_mismatch of string * Longident.t * Path.t * Path.t * (Path.t * Path.t) list
|
Invalid_format of string
|
Undefined_method of Types.type_expr * string * string list option
|
Undefined_inherited_method of string * string list
|
Virtual_class of Longident.t
|
Private_type of Types.type_expr
|
Private_label of Longident.t * Types.type_expr
|
Unbound_instance_variable of string * string list
|
Instance_variable_not_mutable of bool * string
|
Not_subtype of Ctype.Unification_trace.t * Ctype.Unification_trace.t
|
Outside_class
|
Value_multiply_overridden of string
|
Coercion_failure of Types.type_expr * Types.type_expr * Ctype.Unification_trace.t * bool
|
Too_many_arguments of bool * Types.type_expr * type_forcing_context option
|
Abstract_wrong_label of Asttypes.arg_label * Types.type_expr * type_forcing_context option
|
Scoping_let_module of string * Types.type_expr
|
Masked_instance_variable of Longident.t
|
Not_a_variant_type of Longident.t
|
Incoherent_label_order
|
Less_general of string * Ctype.Unification_trace.t
|
Modules_not_allowed
|
Cannot_infer_signature
|
Not_a_packed_module of Types.type_expr
|
Unexpected_existential of existential_restriction * string * string list
|
Invalid_interval
|
Invalid_for_loop_index
|
No_value_clauses
|
Exception_pattern_disallowed
|
Mixed_value_and_exception_patterns_under_guard
|
Inlined_record_escape
|
Inlined_record_expected
|
Unrefuted_pattern of Typedtree.pattern
|
Invalid_extension_constructor_payload
|
Not_an_extension_constructor
|
Literal_overflow of string
|
Unknown_literal of string * char
|
Illegal_letrec_pat
|
Illegal_letrec_expr
|
Illegal_class_expr
|
Empty_pattern
|
Letop_type_clash of string * Ctype.Unification_trace.t
|
Andop_type_clash of string * Ctype.Unification_trace.t
|
Bindings_type_clash of Ctype.Unification_trace.t
exception
Error of Location.t * Env.t * error
exception
Error_forward of Location.error
val report_error : Env.t -> Stdlib.Format.formatter -> error -> unit
- deprecated
val type_module : (Env.t -> Parsetree.module_expr -> Typedtree.module_expr) Stdlib.ref
val type_open : (?used_slot:bool Stdlib.ref -> Asttypes.override_flag -> Env.t -> Location.t -> Longident.t Asttypes.loc -> Path.t * Env.t) Stdlib.ref
val type_open_decl : (?used_slot:bool Stdlib.ref -> Env.t -> Parsetree.open_declaration -> Typedtree.open_declaration * Types.signature * Env.t) Stdlib.ref
val type_object : (Env.t -> Location.t -> Parsetree.class_structure -> Typedtree.class_structure * Types.class_signature * string list) Stdlib.ref
val type_package : (Env.t -> Parsetree.module_expr -> Path.t -> Longident.t list -> Typedtree.module_expr * Types.type_expr list) Stdlib.ref
val create_package_type : Location.t -> Env.t -> (Longident.t * (Longident.t * Parsetree.core_type) list) -> Path.t * (Longident.t * Typedtree.core_type) list * Types.type_expr
val constant : Parsetree.constant -> (Asttypes.constant, error) Stdlib.result
val check_recursive_bindings : Env.t -> Typedtree.value_binding list -> unit
val check_recursive_class_bindings : Env.t -> Ident.t list -> Typedtree.class_expr list -> unit