tock-mirror/fco2/Errors.hs
2007-04-07 16:08:31 +00:00

33 lines
679 B
Haskell

-- | Error handling and reporting.
module Errors where
import Data.Generics
import Control.Monad.Error
import qualified AST as A
import Metadata
data OccError = OccError {
errorText :: String,
errorPos :: Maybe OccSourcePos
}
deriving (Show, Eq, Typeable, Data)
type OccErrorT m a = ErrorT OccError m a
die :: Monad m => String -> m a
die s = error $ "\n\nError:\n" ++ s
dieInternal :: Monad m => String -> m a
dieInternal s = die $ "Internal error: " ++ s
formatPos :: Meta -> String
formatPos m
= case findSourcePos m of
Just o -> show o
Nothing -> "?"
dieP :: Monad m => Meta -> String -> m a
dieP m s = die $ formatPos m ++ ": " ++ s