| language-c-0.3.1.1: Analysis and generation of C code | Contents | Index

Language.C.Data.Error

Portability | ghc
Stability | experimental
Maintainer | benedikt.huber@gmail.com

Contents

Severity Level
Error class
Error supertype
Infos attached to errors
Default error types
Raising internal errors

Description
Base type for errors occuring in parsing, analysing and pretty-printing. With ideas from Simon Marlow's An extensible dynamically-typed hierarchy of execeptions [2006]
Synopsis

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
data ErrorLevel

Error levels (severity)
Constructors

LevelWarn |
LevelError |
LevelFatal |

Instances

Eq ErrorLevel |
Ord ErrorLevel |
Show ErrorLevel |

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

errorInfo :: e -> ErrorInfo
obtain source location etc. of an error
toError :: e -> CError
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 |
Error CError |
Error ErrorInfo |
Error TypeMismatch |
Error RedefError |
Error BadSpecifierError |
Error InvalidASTError |

errorPos :: Error e => e -> Position
position of an `Error`
errorLevel :: Error e => e -> ErrorLevel
severity level of an `Error`
errorMsgs :: Error e => e -> [String]
message lines of an `Error`
Error supertype
data CError

supertype of all errors
Constructors

forall err . Error err => CError err |

Instances

Show CError |
Typeable CError |
Error CError |

Infos attached to errors
data ErrorInfo

information attached to every error in Language.C
Constructors

ErrorInfo ErrorLevel Position [String] |

Instances

Show ErrorInfo |
Typeable ErrorInfo |
Error ErrorInfo |

showError :: Error e => String -> e -> 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

Show UnsupportedFeature |
Typeable UnsupportedFeature |
Error UnsupportedFeature |

unsupportedFeature :: Pos a => String -> a -> UnsupportedFeature
unsupportedFeature_ :: String -> UnsupportedFeature
data UserError

unspecified error raised by the user (in case the user does not want to define her own error types).
Instances

Show UserError |
Typeable UserError |
Error UserError |

userErr :: String -> UserError
Raising internal errors
internalErr :: String -> a
raise a fatal internal error; message may have multiple lines
Produced by Haddock version 2.7.2