Portability | ghc |
---|---|
Stability | experimental |
Maintainer | benedikt.huber@gmail.com |
Safe Haskell | None |
Language.C.Data.Error
Contents
Description
Base type for errors occurring in parsing, analysing and pretty-printing. With ideas from Simon Marlow's An extensible dynamically-typed hierarchy of execeptions [2006]
- data ErrorLevel
- = LevelWarn
- | LevelError
- | LevelFatal
- isHardError :: Error ex => ex -> Bool
- class (Typeable e, Show e) => Error e where
- errorInfo :: e -> ErrorInfo
- toError :: e -> CError
- fromError :: CError -> Maybe e
- changeErrorLevel :: e -> ErrorLevel -> e
- errorPos :: Error e => e -> Position
- errorLevel :: Error e => e -> ErrorLevel
- errorMsgs :: Error e => e -> [String]
- data CError = forall err . Error err => CError err
- data ErrorInfo = ErrorInfo ErrorLevel Position [String]
- showError :: Error e => String -> e -> String
- showErrorInfo :: String -> ErrorInfo -> String
- mkErrorInfo :: ErrorLevel -> String -> NodeInfo -> ErrorInfo
- data UnsupportedFeature
- unsupportedFeature :: Pos a => String -> a -> UnsupportedFeature
- unsupportedFeature_ :: String -> UnsupportedFeature
- data UserError
- userErr :: String -> UserError
- internalErr :: String -> a
Severity Level
isHardError :: Error ex => ex -> Bool
return True
when the given error makes it impossible to continue
analysis or compilation.
Error class
class (Typeable e, Show e) => Error e where
errors in Language.C are instance of Error
Methods
obtain source location etc. of an error
wrap error in CError
fromError :: CError -> Maybe e
try to cast a generic CError
to the specific error type
changeErrorLevel :: e -> ErrorLevel -> e
modify the error level
errorLevel :: Error e => e -> ErrorLevel
severity level of an Error
Error supertype
data CError
supertype
of all errors
Infos attached to errors
data ErrorInfo
information attached to every error in Language.C
Constructors
ErrorInfo ErrorLevel Position [String] |
showErrorInfo :: String -> ErrorInfo -> String
converts an error into a string using a fixed format
- either the lines of the long error message or the short message has to be non-empty
- the format is
<fname>:<row>: (column <col>) [<err lvl>] >>> <line_1> <line_2> ... <line_n>
mkErrorInfo :: ErrorLevel -> String -> NodeInfo -> ErrorInfo
Default error types
data UnsupportedFeature
error raised if a operation requires an unsupported or not yet implemented feature.
unsupportedFeature :: Pos a => String -> a -> UnsupportedFeature
data UserError
unspecified error raised by the user (in case the user does not want to define her own error types).
Raising internal errors
internalErr :: String -> a
raise a fatal internal error; message may have multiple lines