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

Copyright(c) 2008 Benedikt Huber Manuel M. T. Chakravarty
Safe HaskellNone




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

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



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


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


Error err => CError err 

Infos attached to errors

data ErrorInfo #

information attached to every error in Language.C

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>

Default error types

data UserError #

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