language-c-0.4.1: Analysis and generation of C code





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]


Severity Level

data ErrorLevel Source

Error levels (severity)

isHardError :: Error ex => ex -> BoolSource

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

Error class

class (Typeable e, Show e) => Error e whereSource

errors in Language.C are instance of Error


errorInfo :: e -> ErrorInfoSource

obtain source location etc. of an error

toError :: e -> CErrorSource

wrap error in CError

fromError :: CError -> Maybe eSource

try to cast a generic CError to the specific error type

changeErrorLevel :: e -> ErrorLevel -> eSource

modify the error level

errorPos :: Error e => e -> PositionSource

position of an Error

errorLevel :: Error e => e -> ErrorLevelSource

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


forall err . Error err => CError err 

Infos attached to errors

data ErrorInfo Source

information attached to every error in Language.C

showErrorInfo :: String -> ErrorInfo -> StringSource

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>

Default error types

data UnsupportedFeature Source

error raised if a operation requires an unsupported or not yet implemented feature.

data UserError Source

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

Raising internal errors

internalErr :: String -> aSource

raise a fatal internal error; message may have multiple lines