Melange_compiler_libs.Includecore
type primitive_mismatch =
| Name
| Arity
| No_alloc(position)
| Native_name
| Result_repr
| Argument_repr(int)
;
type value_mismatch =
| Primitive_mismatch(primitive_mismatch)
| Not_a_primitive
| Type(Errortrace.moregen_error)
;
exception Dont_match(value_mismatch);
type record_change =
Diffing_with_keys.change(Types.label_declaration as 'ld, 'ld, label_mismatch);
type record_mismatch =
| Label_mismatch(list(record_change))
| Unboxed_float_representation(position)
;
type constructor_mismatch =
| Type(Errortrace.equality_error)
| Arity
| Inline_record(list(record_change))
| Kind(position)
| Explicit_return_type(position)
;
type extension_constructor_mismatch =
| Constructor_privacy
| Constructor_mismatch(Ident.t, Types.extension_constructor, Types.extension_constructor,
constructor_mismatch)
;
type variant_change =
Diffing_with_keys.change(Types.constructor_declaration as 'cd,
'cd,
constructor_mismatch);
type private_variant_mismatch =
| Only_outer_closed
| Missing(position, string)
| Presence(string)
| Incompatible_types_for(string)
| Types(Errortrace.equality_error)
;
type type_mismatch =
| Arity
| Privacy(privacy_mismatch)
| Kind(kind_mismatch)
| Constraint(Errortrace.equality_error)
| Manifest(Errortrace.equality_error)
| Private_variant(Types.type_expr, Types.type_expr, private_variant_mismatch)
| Private_object(Types.type_expr, Types.type_expr, private_object_mismatch)
| Variance
| Record_mismatch(record_mismatch)
| Variant_mismatch(list(variant_change))
| Unboxed_representation(position)
| Immediate(Type_immediacy.Violation.t)
;
let value_descriptions:
loc:Location.t =>
Env.t =>
Ident.t =>
Types.value_description =>
Types.value_description =>
Typedtree.module_coercion;
let type_declarations:
?equality:bool =>
loc:Location.t =>
Env.t =>
mark:bool =>
string =>
Types.type_declaration =>
Path.t =>
Types.type_declaration =>
option(type_mismatch);
let extension_constructors:
loc:Location.t =>
Env.t =>
mark:bool =>
Ident.t =>
Types.extension_constructor =>
Types.extension_constructor =>
option(extension_constructor_mismatch);
let report_value_mismatch:
string =>
string =>
Env.t =>
Stdlib.Format.formatter =>
value_mismatch =>
unit;
let report_type_mismatch:
string =>
string =>
string =>
Env.t =>
Stdlib.Format.formatter =>
type_mismatch =>
unit;
let report_extension_constructor_mismatch:
string =>
string =>
string =>
Env.t =>
Stdlib.Format.formatter =>
extension_constructor_mismatch =>
unit;