| language-c-0.3.1.1: Analysis and generation of C code | Source 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 | Source

Error levels (severity)
Constructors

LevelWarn |
LevelError |
LevelFatal |

Instances

Eq ErrorLevel
Ord ErrorLevel
Show ErrorLevel

isHardError :: Error ex => ex -> Bool | Source

return `True` when the given error makes it impossible to continue analysis or compilation.
Error class

class (Typeable e, Show e) => Error e where | Source

errors in Language.C are instance of `Error`
Methods

errorInfo :: e -> ErrorInfo | Source

obtain source location etc. of an error

toError :: e -> CError | Source

wrap error in `CError`

fromError :: CError -> Maybe e | Source

try to cast a generic `CError` to the specific error type

changeErrorLevel :: e -> ErrorLevel -> e | Source

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 | Source

position of an `Error`

errorLevel :: Error e => e -> ErrorLevel | Source

severity level of an `Error`

errorMsgs :: Error e => e -> [String] | Source

message lines of an `Error`
Error supertype

data CError | Source

supertype of all errors
Constructors

forall err . Error err => CError err |

Instances

Show CError
Typeable CError
Error CError

Infos attached to errors

data ErrorInfo | Source

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 | Source

showErrorInfo :: String -> ErrorInfo -> String | Source

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 | Source

Default error types

data UnsupportedFeature | Source

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 | Source

unsupportedFeature_ :: String -> UnsupportedFeature | Source

data UserError | Source

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 | Source

Raising internal errors

internalErr :: String -> a | Source

raise a fatal internal error; message may have multiple lines
Produced by Haddock version 2.4.2