hets -- a heterogenous Specification (CASL) tool setContentsIndex
Common.Result
Portability portable
Stability provisional
Maintainer hets@tzi.de
Description
This module provides a Result type and some monadic functions to use this type for accumulation of errors and warnings occuring during the analyse phases.
Synopsis
maxdiags :: Int
data DiagKind
= FatalError
| Error
| Warning
| Hint
| Debug
data Diagnosis = Diag {
diagKind :: DiagKind
diagString :: String
diagPos :: Pos
}
mkDiag :: (PosItem a, PrettyPrint a) => DiagKind -> String -> a -> Diagnosis
hasErrors :: [Diagnosis] -> Bool
checkUniqueness :: (PrettyPrint a, PosItem a, Ord a) => [a] -> [Diagnosis]
data Result a = Result {
diags :: [Diagnosis]
maybeResult :: (Maybe a)
}
class Mergeable a where
merge :: a -> a -> Result a
ioBind :: IO (Result a) -> (a -> IO (Result b)) -> IO (Result b)
newtype IOResult a = IOResult (IO (Result a))
ioresToIO :: IOResult a -> IO (Result a)
ioToIORes :: IO a -> IOResult a
resToIORes :: Result a -> IOResult a
fatal_error :: String -> Pos -> Result a
pfatal_error :: Doc -> Pos -> Result a
plain_error :: a -> String -> Pos -> Result a
pplain_error :: a -> Doc -> Pos -> Result a
warning :: a -> String -> Pos -> Result a
maybeToResult :: Pos -> String -> Maybe a -> Result a
adjustPos :: Pos -> Result a -> Result a
propagateErrors :: Result a -> a
debug :: PrettyPrint a => Int -> (String, a) -> Result ()
showPretty :: PrettyPrint a => a -> ShowS
Documentation
maxdiags :: Int
maximum number of messages that are output
data DiagKind
severness of diagnostic messages
Constructors
FatalError
Error
Warning
Hint
Debug
Instances
ATermConvertible DiagKind
Eq DiagKind
Ord DiagKind
Show DiagKind
data Diagnosis
a diagnostic message with a position
Constructors
Diag
diagKind :: DiagKind
diagString :: String
diagPos :: Pos
Instances
ATermConvertible Diagnosis
Show Diagnosis
PrettyPrint Diagnosis
PosItem Diagnosis
Eq Diagnosis
mkDiag :: (PosItem a, PrettyPrint a) => DiagKind -> String -> a -> Diagnosis
construct a message for a printable item that carries a position
hasErrors :: [Diagnosis] -> Bool
Check whether a diagnosis list contains errors
checkUniqueness :: (PrettyPrint a, PosItem a, Ord a) => [a] -> [Diagnosis]
errors for duplicates in argument, selector or constructor lists.
data Result a
The Result monad. A failing Result should include a FatalError message. Otherwise diagnostics should be non-fatal.
Constructors
Result
diags :: [Diagnosis]
maybeResult :: (Maybe a)
Instances
ATermConvertible a => ATermConvertible (Result a)
Functor Result
Monad Result
PrettyPrint a => PrettyPrint (Result a)
??? a => Show (Result a)
class Mergeable a where
merge together repeated or extended items
Methods
merge :: a -> a -> Result a
Instances
(Ord a, PosItem a, PrettyPrint a, Mergeable b) => Mergeable (Map a b)
Mergeable a => Mergeable (Maybe a)
Mergeable ClassInfo
Mergeable Kind
Mergeable Vars
Mergeable OpAttr
Mergeable OpBrand
Mergeable OpDefn
Mergeable Term
ioBind :: IO (Result a) -> (a -> IO (Result b)) -> IO (Result b)
newtype IOResult a
Constructors
IOResult (IO (Result a))
Instances
Monad IOResult
ioresToIO :: IOResult a -> IO (Result a)
ioToIORes :: IO a -> IOResult a
resToIORes :: Result a -> IOResult a
fatal_error :: String -> Pos -> Result a
a failing result with a proper position
pfatal_error :: Doc -> Pos -> Result a
a failing result, using pretty printed Doc
plain_error :: a -> String -> Pos -> Result a
add an error message but continue (within do)
pplain_error :: a -> Doc -> Pos -> Result a
an error message, using pretty printed Doc
warning :: a -> String -> Pos -> Result a
add a warning
maybeToResult :: Pos -> String -> Maybe a -> Result a
add a fatal error message to a failure (Nothing)
adjustPos :: Pos -> Result a -> Result a
propagateErrors :: Result a -> a
Propagate errors using the error function
debug :: PrettyPrint a => Int -> (String, a) -> Result ()
showPretty :: PrettyPrint a => a -> ShowS
a more pretty alternative for shows
Produced by Haddock version 0.6