View Source TypeCheck.TypeError.Formatter behaviour (TypeCheck v0.12.0)
Behaviour to format your own type errors
Link to this section Summary
Types
A problem tuple
contains four fields
Callbacks
A formatter is expected to turn a problem_tuple
into a string
that can be used as :message
of the TypeCheck.TypeError exception.
Link to this section Types
@type problem_tuple() :: TypeCheck.Builtin.Any.problem_tuple() | TypeCheck.Builtin.Atom.problem_tuple() | TypeCheck.Builtin.Binary.problem_tuple() | TypeCheck.Builtin.Bitstring.problem_tuple() | TypeCheck.Builtin.Boolean.problem_tuple() | TypeCheck.Builtin.FixedList.problem_tuple() | TypeCheck.Builtin.FixedMap.problem_tuple() | TypeCheck.Builtin.CompoundFixedMap.problem_tuple() | TypeCheck.Builtin.FixedTuple.problem_tuple() | TypeCheck.Builtin.Float.problem_tuple() | TypeCheck.Builtin.Integer.problem_tuple() | TypeCheck.Builtin.List.problem_tuple() | TypeCheck.Builtin.MaybeImproperList.problem_tuple() | TypeCheck.Builtin.Literal.problem_tuple() | TypeCheck.Builtin.Map.problem_tuple() | TypeCheck.Builtin.NamedType.problem_tuple() | TypeCheck.Builtin.NegInteger.problem_tuple() | TypeCheck.Builtin.NonNegInteger.problem_tuple() | TypeCheck.Builtin.None.problem_tuple() | TypeCheck.Builtin.Number.problem_tuple() | TypeCheck.Builtin.OneOf.problem_tuple() | TypeCheck.Builtin.PosInteger.problem_tuple() | TypeCheck.Builtin.PID.problem_tuple() | TypeCheck.Builtin.Port.problem_tuple() | TypeCheck.Builtin.Reference.problem_tuple() | TypeCheck.Builtin.Range.problem_tuple() | TypeCheck.Builtin.Tuple.problem_tuple() | TypeCheck.Spec.problem_tuple()
A problem tuple
contains four fields:
- the module of the type for which a check did not pass
- an atom describing the exact error; for many types there are multiple checks
- a map with fields containing extra information about the error. in the cases of a compound type, this often contains information about the deeper problem that happened as well.
- the datastructure that did not pass the check
See the module documentation of all TypeCheck.Builtin.*
modules
for more information about the checks that they perform and the problem tuples they might return.
(This type is managed by TypeCheck
,
which allows checking values against the type at runtime.)
Full definition:
problem_tuple :: TypeCheck.Builtin.Any.problem_tuple()
| TypeCheck.Builtin.Atom.problem_tuple()
| TypeCheck.Builtin.Binary.problem_tuple()
| TypeCheck.Builtin.Bitstring.problem_tuple()
| TypeCheck.Builtin.Boolean.problem_tuple()
| TypeCheck.Builtin.FixedList.problem_tuple()
| TypeCheck.Builtin.FixedMap.problem_tuple()
| TypeCheck.Builtin.CompoundFixedMap.problem_tuple()
| TypeCheck.Builtin.FixedTuple.problem_tuple()
| TypeCheck.Builtin.Float.problem_tuple()
| TypeCheck.Builtin.Integer.problem_tuple()
| TypeCheck.Builtin.List.problem_tuple()
| TypeCheck.Builtin.MaybeImproperList.problem_tuple()
| TypeCheck.Builtin.Literal.problem_tuple()
| TypeCheck.Builtin.Map.problem_tuple()
| TypeCheck.Builtin.NamedType.problem_tuple()
| TypeCheck.Builtin.NegInteger.problem_tuple()
| TypeCheck.Builtin.NonNegInteger.problem_tuple()
| TypeCheck.Builtin.None.problem_tuple()
| TypeCheck.Builtin.Number.problem_tuple()
| TypeCheck.Builtin.OneOf.problem_tuple()
| TypeCheck.Builtin.PosInteger.problem_tuple()
| TypeCheck.Builtin.PID.problem_tuple()
| TypeCheck.Builtin.Port.problem_tuple()
| TypeCheck.Builtin.Reference.problem_tuple()
| TypeCheck.Builtin.Range.problem_tuple()
| TypeCheck.Builtin.Tuple.problem_tuple()
| TypeCheck.Spec.problem_tuple()
Link to this section Callbacks
@callback format(problem_tuple(), TypeCheck.TypeError.location()) :: String.t()
A formatter is expected to turn a problem_tuple
into a string
that can be used as :message
of the TypeCheck.TypeError exception.