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 |
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]"
Synopsis
- data ErrorLevel
- 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 = 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
data ErrorLevel #
Error levels (severity)
Instances
Eq ErrorLevel # | |
Defined in Language.C.Data.Error (==) :: ErrorLevel -> ErrorLevel -> Bool # (/=) :: ErrorLevel -> ErrorLevel -> Bool # | |
Ord ErrorLevel # | |
Defined in Language.C.Data.Error compare :: ErrorLevel -> ErrorLevel -> Ordering # (<) :: ErrorLevel -> ErrorLevel -> Bool # (<=) :: ErrorLevel -> ErrorLevel -> Bool # (>) :: ErrorLevel -> ErrorLevel -> Bool # (>=) :: ErrorLevel -> ErrorLevel -> Bool # max :: ErrorLevel -> ErrorLevel -> ErrorLevel # min :: ErrorLevel -> ErrorLevel -> ErrorLevel # | |
Show ErrorLevel # | |
Defined in Language.C.Data.Error showsPrec :: Int -> ErrorLevel -> ShowS # show :: ErrorLevel -> String # showList :: [ErrorLevel] -> ShowS # |
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
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
Instances
Error UserError # | |
Error UnsupportedFeature # | |
Defined in Language.C.Data.Error | |
Error CError # | |
Error ErrorInfo # | |
Error TypeMismatch # | |
Defined in Language.C.Analysis.SemError errorInfo :: TypeMismatch -> ErrorInfo # toError :: TypeMismatch -> CError # fromError :: CError -> Maybe TypeMismatch # changeErrorLevel :: TypeMismatch -> ErrorLevel -> TypeMismatch # | |
Error RedefError # | |
Defined in Language.C.Analysis.SemError errorInfo :: RedefError -> ErrorInfo # toError :: RedefError -> CError # fromError :: CError -> Maybe RedefError # changeErrorLevel :: RedefError -> ErrorLevel -> RedefError # | |
Error BadSpecifierError # | |
Defined in Language.C.Analysis.SemError | |
Error InvalidASTError # | |
Defined in Language.C.Analysis.SemError errorInfo :: InvalidASTError -> ErrorInfo # toError :: InvalidASTError -> CError # fromError :: CError -> Maybe InvalidASTError # changeErrorLevel :: InvalidASTError -> ErrorLevel -> InvalidASTError # |
errorLevel :: Error e => e -> ErrorLevel #
severity level of an Error
Error supertype
Infos attached to errors
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
Show UnsupportedFeature # | |
Defined in Language.C.Data.Error showsPrec :: Int -> UnsupportedFeature -> ShowS # show :: UnsupportedFeature -> String # showList :: [UnsupportedFeature] -> ShowS # | |
Error UnsupportedFeature # | |
Defined in Language.C.Data.Error |
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