Includemod.Error
type core_diff('elt) = diff('elt, unit);
type functor_arg_descr =
| Anonymous
| Named(Path.t)
| Unit
| Empty_struct
For backward compatibility's sake, an empty struct can be implicitly converted to an unit module.
*/;
type core_sigitem_symptom =
| Value_descriptions(diff(Types.value_description, Includecore.value_mismatch))
| Type_declarations(diff(Types.type_declaration, Includecore.type_mismatch))
| Extension_constructors(diff(Types.extension_constructor,
Includecore.extension_constructor_mismatch))
| Class_type_declarations(diff(Types.class_type_declaration,
list(Ctype.class_match_failure)))
| Class_declarations(diff(Types.class_declaration,
list(Ctype.class_match_failure)))
;
type core_module_type_symptom =
| Not_an_alias
| Not_an_identifier
| Incompatible_aliases
| Abstract_module_type
| Unbound_module_path(Path.t)
;
type module_type_symptom =
| Mt_core(core_module_type_symptom)
| Signature(signature_symptom)
| Functor(functor_symptom)
| Invalid_module_alias(Path.t)
| After_alias_expansion(module_type_diff)
;
and module_type_diff = diff(Types.module_type, module_type_symptom);
and functor_param_symptom('arg, 'path) =
| Incompatible_params('arg, Types.functor_parameter)
| Mismatch(module_type_diff)
;
and arg_functor_param_symptom =
functor_param_symptom(Types.functor_parameter, Ident.t);
and functor_params_diff =
core_diff((list(Types.functor_parameter), Types.module_type));
and signature_symptom = {
env: Env.t,
missings: list(Types.signature_item),
incompatibles: list((Ident.t, sigitem_symptom)),
oks: list((int, Typedtree.module_coercion)),
leftovers: list((Types.signature_item as 'it, 'it, int)),
signature items that could not be compared due to type divergence
*/};
and sigitem_symptom =
| Core(core_sigitem_symptom)
| Module_type_declaration(diff(Types.modtype_declaration,
module_type_declaration_symptom))
| Module_type(module_type_diff)
;
and module_type_declaration_symptom =
| Illegal_permutation(Typedtree.module_coercion)
| Not_greater_than(module_type_diff)
| Not_less_than(module_type_diff)
| Incomparable of {
less_than: module_type_diff,
greater_than: module_type_diff,
}
;
type all =
| In_Compilation_unit(diff(string, signature_symptom))
| In_Signature(signature_symptom)
| In_Module_type(module_type_diff)
| In_Module_type_substitution(Ident.t, diff(Types.module_type,
module_type_declaration_symptom))
| In_Type_declaration(Ident.t, core_sigitem_symptom)
| In_Expansion(core_module_type_symptom)
;