Ctype.Unification_trace
Unification traces are used to explain unification errors when printing error messages
type 'a escape =
| Constructor of Path.t | |
| Univ of Types.type_expr | (* The type_expr argument of |
| Self | |
| Module_type of Path.t | |
| Equation of 'a |
Scope escape related errors
Errors for polymorphic variants
type variant =
| No_intersection | |
| No_tags of position * (Asttypes.label * Types.row_field) list | |
| Incompatible_types_for of string | |
| Fixed_row of position * fixed_row_case * Types.fixed_explanation | (* Fixed row types, e.g. |
type 'a elt =
| Diff of 'a diff | ||
| Variant of variant | ||
| Obj of obj | ||
| Escape of {
} | ||
| Incompatible_fields of {
} | ||
| Rec_occur of Types.type_expr * Types.type_expr |
val diff : Types.type_expr -> Types.type_expr -> desc elt
map_diff f {expected;got}
is {expected=f expected; got=f got}
val flatten : (Types.type_expr -> Types.type_expr -> 'a) -> t -> 'a elt list
flatten f trace
flattens all elements of type desc
in trace
to either f x.t expanded
if x.expanded=Some expanded
or f x.t x.t
otherwise