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

Portabilityghc
Stabilityexperimental
Maintainerbenedikt.huber@gmail.com
Safe HaskellNone

Language.C.Data.Error

Contents

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

Severity Level

data ErrorLevel

Error levels (severity)

Instances

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

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

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>

Default error types

data UnsupportedFeature

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

data UserError

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

Instances

userErr :: String -> UserError

Raising internal errors

internalErr :: String -> a

raise a fatal internal error; message may have multiple lines