Hets - the Heterogeneous Tool Set
Copyright(c) T. Mossakowski C. Maeder Uni Bremen 2002-2008
LicenseGPLv2 or higher, see LICENSE.txt
MaintainerChristian.Maeder@dfki.de
Stabilityprovisional
Portabilityportable
Safe HaskellSafe

Common.Result

Description

Result monad for accumulating Diagnosis messages during analysis phases.

Synopsis

Documentation

data DiagKind Source #

severness of diagnostic messages

Constructors

Error 
Warning 
Hint 
Debug 
MessageW

used for messages in the web interface

Instances

Instances details
Eq DiagKind Source # 
Instance details

Defined in Common.Result

Methods

(==) :: DiagKind -> DiagKind -> Bool

(/=) :: DiagKind -> DiagKind -> Bool

Data DiagKind Source # 
Instance details

Defined in Common.Result

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DiagKind -> c DiagKind

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DiagKind

toConstr :: DiagKind -> Constr

dataTypeOf :: DiagKind -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DiagKind)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DiagKind)

gmapT :: (forall b. Data b => b -> b) -> DiagKind -> DiagKind

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DiagKind -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DiagKind -> r

gmapQ :: (forall d. Data d => d -> u) -> DiagKind -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> DiagKind -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DiagKind -> m DiagKind

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DiagKind -> m DiagKind

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DiagKind -> m DiagKind

Ord DiagKind Source # 
Instance details

Defined in Common.Result

Methods

compare :: DiagKind -> DiagKind -> Ordering

(<) :: DiagKind -> DiagKind -> Bool

(<=) :: DiagKind -> DiagKind -> Bool

(>) :: DiagKind -> DiagKind -> Bool

(>=) :: DiagKind -> DiagKind -> Bool

max :: DiagKind -> DiagKind -> DiagKind

min :: DiagKind -> DiagKind -> DiagKind

Show DiagKind Source # 
Instance details

Defined in Common.Result

Methods

showsPrec :: Int -> DiagKind -> ShowS

show :: DiagKind -> String

showList :: [DiagKind] -> ShowS

Generic DiagKind 
Instance details

Defined in ATC.Result

Associated Types

type Rep DiagKind :: Type -> Type

Methods

from :: DiagKind -> Rep DiagKind x

to :: Rep DiagKind x -> DiagKind

FromJSON DiagKind 
Instance details

Defined in ATC.Result

Methods

parseJSON :: Value -> Parser DiagKind

parseJSONList :: Value -> Parser [DiagKind]

ToJSON DiagKind 
Instance details

Defined in ATC.Result

Methods

toJSON :: DiagKind -> Value

toEncoding :: DiagKind -> Encoding

toJSONList :: [DiagKind] -> Value

toEncodingList :: [DiagKind] -> Encoding

ShATermConvertible DiagKind 
Instance details

Defined in ATC.Result

Methods

toShATermAux :: ATermTable -> DiagKind -> IO (ATermTable, Int)

toShATermList' :: ATermTable -> [DiagKind] -> IO (ATermTable, Int)

fromShATermAux :: Int -> ATermTable -> (ATermTable, DiagKind)

fromShATermList' :: Int -> ATermTable -> (ATermTable, [DiagKind])

type Rep DiagKind 
Instance details

Defined in ATC.Result

type Rep DiagKind = D1 ('MetaData "DiagKind" "Common.Result" "main" 'False) ((C1 ('MetaCons "Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Warning" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Hint" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Debug" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MessageW" 'PrefixI 'False) (U1 :: Type -> Type))))

data Diagnosis Source #

a diagnostic message with Pos

Constructors

Diag 

Fields

Instances

Instances details
Eq Diagnosis Source # 
Instance details

Defined in Common.Result

Methods

(==) :: Diagnosis -> Diagnosis -> Bool

(/=) :: Diagnosis -> Diagnosis -> Bool

Data Diagnosis Source # 
Instance details

Defined in Common.Result

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Diagnosis -> c Diagnosis

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Diagnosis

toConstr :: Diagnosis -> Constr

dataTypeOf :: Diagnosis -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Diagnosis)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Diagnosis)

gmapT :: (forall b. Data b => b -> b) -> Diagnosis -> Diagnosis

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Diagnosis -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Diagnosis -> r

gmapQ :: (forall d. Data d => d -> u) -> Diagnosis -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Diagnosis -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Diagnosis -> m Diagnosis

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Diagnosis -> m Diagnosis

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Diagnosis -> m Diagnosis

Show Diagnosis Source # 
Instance details

Defined in Common.Result

Methods

showsPrec :: Int -> Diagnosis -> ShowS

show :: Diagnosis -> String

showList :: [Diagnosis] -> ShowS

Generic Diagnosis 
Instance details

Defined in ATC.Result

Associated Types

type Rep Diagnosis :: Type -> Type

Methods

from :: Diagnosis -> Rep Diagnosis x

to :: Rep Diagnosis x -> Diagnosis

GetRange Diagnosis Source # 
Instance details

Defined in Common.Result

FromJSON Diagnosis 
Instance details

Defined in ATC.Result

Methods

parseJSON :: Value -> Parser Diagnosis

parseJSONList :: Value -> Parser [Diagnosis]

ToJSON Diagnosis 
Instance details

Defined in ATC.Result

Methods

toJSON :: Diagnosis -> Value

toEncoding :: Diagnosis -> Encoding

toJSONList :: [Diagnosis] -> Value

toEncodingList :: [Diagnosis] -> Encoding

ShATermConvertible Diagnosis 
Instance details

Defined in ATC.Result

Methods

toShATermAux :: ATermTable -> Diagnosis -> IO (ATermTable, Int)

toShATermList' :: ATermTable -> [Diagnosis] -> IO (ATermTable, Int)

fromShATermAux :: Int -> ATermTable -> (ATermTable, Diagnosis)

fromShATermList' :: Int -> ATermTable -> (ATermTable, [Diagnosis])

Pretty Diagnosis Source # 
Instance details

Defined in Common.Result

type Rep Diagnosis 
Instance details

Defined in ATC.Result

type Rep Diagnosis = D1 ('MetaData "Diagnosis" "Common.Result" "main" 'False) (C1 ('MetaCons "Diag" 'PrefixI 'True) (S1 ('MetaSel ('Just "diagKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 DiagKind) :*: (S1 ('MetaSel ('Just "diagString") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "diagPos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Range))))

mkDiag :: (GetRange a, Pretty a) => DiagKind -> String -> a -> Diagnosis Source #

construct a message for a printable item that carries a position

mkNiceDiag :: (GetRange a, Pretty a) => GlobalAnnos -> DiagKind -> String -> a -> Diagnosis Source #

construct a message for a printable item that carries a position

isErrorDiag :: Diagnosis -> Bool Source #

check whether a diagnosis is an error

hasErrors :: [Diagnosis] -> Bool Source #

Check whether a diagnosis list contains errors

addErrorDiag :: (GetRange a, Pretty a) => String -> a -> Result b -> Result b Source #

add a further error message to explain a failure

checkUniqueness :: (Pretty a, GetRange a, Ord a) => [a] -> [Diagnosis] Source #

A uniqueness check yields errors for duplicates in a given list.

data Result a Source #

The result monad. A failing result should include an error message.

Constructors

Result 

Fields

Instances

Instances details
Monad Result Source # 
Instance details

Defined in Common.Result

Methods

(>>=) :: Result a -> (a -> Result b) -> Result b

(>>) :: Result a -> Result b -> Result b

return :: a -> Result a

Functor Result Source # 
Instance details

Defined in Common.Result

Methods

fmap :: (a -> b) -> Result a -> Result b

(<$) :: a -> Result b -> Result a

MonadFail Result Source # 
Instance details

Defined in Common.Result

Methods

fail :: String -> Result a

Applicative Result Source # 
Instance details

Defined in Common.Result

Methods

pure :: a -> Result a

(<*>) :: Result (a -> b) -> Result a -> Result b

liftA2 :: (a -> b -> c) -> Result a -> Result b -> Result c

(*>) :: Result a -> Result b -> Result b

(<*) :: Result a -> Result b -> Result a

Alternative Result Source # 
Instance details

Defined in Common.Result

Methods

empty :: Result a

(<|>) :: Result a -> Result a -> Result a

some :: Result a -> Result [a]

many :: Result a -> Result [a]

MonadPlus Result Source # 
Instance details

Defined in Common.Result

Methods

mzero :: Result a

mplus :: Result a -> Result a -> Result a

Data a => Data (Result a) Source # 
Instance details

Defined in Common.Result

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Result a -> c (Result a)

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Result a)

toConstr :: Result a -> Constr

dataTypeOf :: Result a -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Result a))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Result a))

gmapT :: (forall b. Data b => b -> b) -> Result a -> Result a

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Result a -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Result a -> r

gmapQ :: (forall d. Data d => d -> u) -> Result a -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> Result a -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Result a -> m (Result a)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Result a -> m (Result a)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Result a -> m (Result a)

Show a => Show (Result a) Source # 
Instance details

Defined in Common.Result

Methods

showsPrec :: Int -> Result a -> ShowS

show :: Result a -> String

showList :: [Result a] -> ShowS

Generic (Result a) 
Instance details

Defined in ATC.Result

Associated Types

type Rep (Result a) :: Type -> Type

Methods

from :: Result a -> Rep (Result a) x

to :: Rep (Result a) x -> Result a

FromJSON a => FromJSON (Result a) 
Instance details

Defined in ATC.Result

Methods

parseJSON :: Value -> Parser (Result a)

parseJSONList :: Value -> Parser [Result a]

ToJSON a => ToJSON (Result a) 
Instance details

Defined in ATC.Result

Methods

toJSON :: Result a -> Value

toEncoding :: Result a -> Encoding

toJSONList :: [Result a] -> Value

toEncodingList :: [Result a] -> Encoding

ShATermConvertible a => ShATermConvertible (Result a) 
Instance details

Defined in ATC.Result

Methods

toShATermAux :: ATermTable -> Result a -> IO (ATermTable, Int)

toShATermList' :: ATermTable -> [Result a] -> IO (ATermTable, Int)

fromShATermAux :: Int -> ATermTable -> (ATermTable, Result a)

fromShATermList' :: Int -> ATermTable -> (ATermTable, [Result a])

Pretty a => Pretty (Result a) Source # 
Instance details

Defined in Common.Result

Methods

pretty :: Result a -> Doc Source #

pretties :: [Result a] -> Doc Source #

type Rep (Result a) 
Instance details

Defined in ATC.Result

type Rep (Result a) = D1 ('MetaData "Result" "Common.Result" "main" 'False) (C1 ('MetaCons "Result" 'PrefixI 'True) (S1 ('MetaSel ('Just "diags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Diagnosis]) :*: S1 ('MetaSel ('Just "maybeResult") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe a))))

joinResultWith :: (a -> b -> c) -> Result a -> Result b -> Result c Source #

join two results with a combining function

joinResult :: Result a -> Result b -> Result b Source #

join two results

mapR :: (a -> Result b) -> [a] -> Result [b] Source #

join a list of results that are independently computed

fatal_error :: String -> Range -> Result a Source #

a failing result with a proper position

mkError :: (GetRange a, Pretty a) => String -> a -> Result b Source #

a failing result constructing a message from a type

debug :: (GetRange a, Pretty a) => Int -> (String, a) -> Result () Source #

add a debug point

plain_error :: a -> String -> Range -> Result a Source #

add an error message but don't fail

warning :: a -> String -> Range -> Result a Source #

add a warning

justWarn :: a -> String -> Result a Source #

just add a warning without position information

hint :: a -> String -> Range -> Result a Source #

add a hint

justHint :: a -> String -> Result a Source #

just add a hint without position information

message :: a -> String -> Result a Source #

add a (web interface) message

maybeToResult :: Range -> String -> Maybe a -> Result a Source #

add a failure message to Nothing

resultToMonad :: MonadFail m => String -> Result a -> m a Source #

Propagate errors using the error function

resultToMaybe :: Result a -> Maybe a Source #

check whether no errors are present, coerce into Maybe

adjustPos :: Range -> Result a -> Result a Source #

adjust positions of diagnoses

updDiagKind :: (DiagKind -> DiagKind) -> Diagnosis -> Diagnosis Source #

change the diag kind of a diagnosis

propagateErrors :: String -> Result a -> a Source #

Propagate errors using the error function

showErr :: ParseError -> String Source #

showing (Parsec) parse errors using our own showPos function

showRelDiags :: Int -> [Diagnosis] -> String Source #

printDiags :: Int -> [Diagnosis] -> IO () Source #

Orphan instances

MonadFail Identity Source # 
Instance details

Methods

fail :: String -> Identity a

Pretty Range Source # 
Instance details