idris-0.9.12: libs/base/Language/Reflection/Errors.idr
module Language.Reflection.Errors
import Language.Reflection
data SourceLocation : Type where
FileLoc : (filename : String) -> (start : (Int, Int)) -> (end : (Int, Int)) -> SourceLocation
%name SourceLocation loc
data Err = Msg String
| InternalMsg String
| CantUnify Bool TT TT Err (List (TTName, TT)) Int
-- Int is 'score' - how much we did unify
-- Bool indicates recoverability, True indicates more info may make
-- unification succeed
| InfiniteUnify TTName TT (List (TTName, TT))
| CantConvert TT TT (List (TTName, TT))
| CantSolveGoal TT (List (TTName, TT))
| UnifyScope TTName TTName TT (List (TTName, TT))
| CantInferType String
| NonFunctionType TT TT
| NotEquality TT TT
| TooManyArguments TTName
| CantIntroduce TT
| NoSuchVariable TTName
| NoTypeDecl TTName
| NotInjective TT TT TT
| CantResolve TT
| CantResolveAlts (List String)
| IncompleteTerm TT
| UniverseError
| ProgramLineComment
| Inaccessible TTName
| NonCollapsiblePostulate TTName
| AlreadyDefined TTName
| ProofSearchFail Err
| NoRewriting TT
| ProviderError String
| LoadingFailed String Err
%name Err err, e
||| Error reports are a list of report parts
data ErrorReportPart = TextPart String
| NamePart TTName
| TermPart TT
| SubReport (List ErrorReportPart)
%name ErrorReportPart part, p
-- Error reports become functions in List (String, TT) -> Err -> ErrorReport
ErrorHandler : Type
ErrorHandler = Err -> Maybe (List ErrorReportPart)