Copyright | (c) 2008 Benedikt Huber Manuel M. T. Chakravarty |
---|---|
License | BSD-style |
Maintainer | benedikt.huber@gmail.com |
Stability | experimental |
Portability | ghc |
Safe Haskell | None |
Language | Haskell98 |
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
- isHardError :: Error ex => ex -> Bool
- class (Typeable e, Show e) => Error e where
- errorPos :: Error e => e -> Position
- errorLevel :: Error e => e -> ErrorLevel
- errorMsgs :: Error e => e -> [String]
- data CError = 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
Minimal complete definition
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
supertype
of all errors
Infos attached to errors
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.
Instances
unsupportedFeature :: Pos a => String -> a -> UnsupportedFeature #
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