sig
type raw_error =
CyclicDependency of Module.name
| NotAFunction of TypeCore.var
| ExpectedType of TypeCore.typ * TypeCore.var * Derivations.derivation
| RecursiveOnlyForFunctions
| MissingField of TypeCore.Field.name
| ExtraField of TypeCore.Field.name
| NoSuchField of TypeCore.var * TypeCore.Field.name
| CantAssignTag of TypeCore.var
| NoSuchFieldInPattern of Expressions.pattern * TypeCore.Field.name
| BadPattern of Expressions.pattern * TypeCore.var
| BadField of Datacon.name * TypeCore.Field.name
| NoTwoConstructors of TypeCore.var
| MatchBadDatacon of TypeCore.var * Datacon.name
| MatchBadTuple of TypeCore.var
| AssignNotExclusive of TypeCore.typ * Datacon.name
| FieldCountMismatch of TypeCore.typ * Datacon.name
| NoMultipleArguments
| ResourceAllocationConflict of TypeCore.var
| UncertainMerge of TypeCore.var
| ConflictingTypeAnnotations of TypeCore.typ * TypeCore.typ
| IllKindedTypeApplication of Expressions.tapp * Kind.kind * Kind.kind
| BadTypeApplication of TypeCore.var
| NonExclusiveAdoptee of TypeCore.typ
| NoAdoptsClause of TypeCore.var
| NotDynamic of TypeCore.var
| NoSuitableTypeForAdopts of TypeCore.var * TypeCore.typ
| AdoptsNoAnnotation
| NotMergingClauses of TypeCore.env * TypeCore.typ * TypeCore.typ *
TypeCore.env * TypeCore.typ * TypeCore.typ
| MissingFieldInSignature of Variable.name
| NoSuchTypeInSignature of TypeCore.var * TypeCore.typ
| DataTypeMismatchInSignature of Variable.name * string
| VarianceAnnotationMismatch
val raise_error : TypeCore.env -> TypeErrors.raw_error -> 'a
val warn_or_error : TypeCore.env -> TypeErrors.raw_error -> unit
type error
exception TypeCheckerError of TypeErrors.error
val print_error : Buffer.t -> TypeErrors.error -> unit
val html_error : TypeErrors.error -> unit
val fold_type : TypeCore.env -> TypeCore.typ -> TypeCore.typ option
val internal_extracterror : TypeErrors.error -> TypeErrors.raw_error
end