From a4c2196f3cf775e785f4914b93df3726159d4421 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sat, 8 Nov 2008 15:59:40 +0000 Subject: [PATCH] Removed the ErrorT now that we are on top of PassM anyway --- checks/CheckFramework.hs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/checks/CheckFramework.hs b/checks/CheckFramework.hs index b97afd6..c265287 100644 --- a/checks/CheckFramework.hs +++ b/checks/CheckFramework.hs @@ -26,10 +26,13 @@ import Data.Maybe import Control.Exception import qualified AST as A -import UsageCheckUtils +import Errors +import FlowGraph import GenericUtils +import Metadata import Pass import Traversal +import UsageCheckUtils import Utils data CheckOptData = CheckOptData @@ -41,14 +44,14 @@ data CheckOptData = CheckOptData invalidateAll :: CheckOptData -> A.AST -> CheckOptData invalidateAll d t = d { ast = t, parItems = Nothing} -newtype CheckOptM a = CheckOptM (ErrorT String (StateT CheckOptData PassM) a) - deriving (Monad, MonadIO, MonadError String {-, MonadState CheckOptData-}) +newtype CheckOptM a = CheckOptM (StateT CheckOptData PassM a) + deriving (Monad, MonadIO) -deCheckOptM :: CheckOptM a -> ErrorT String (StateT CheckOptData PassM) a +deCheckOptM :: CheckOptM a -> StateT CheckOptData PassM a deCheckOptM (CheckOptM x) = x newtype CheckOptM' t a = CheckOptM' (RestartT A.AST t CheckOptM a) - deriving (Monad, MonadIO {-, MonadState (Route t A.AST)-}) + deriving (Monad, MonadIO) deCheckOptM' :: CheckOptM' t a -> RestartT A.AST t CheckOptM a deCheckOptM' (CheckOptM' x) = x @@ -76,7 +79,8 @@ liftRestartT :: Monad m => m a -> RestartT outer t m a liftRestartT m = RestartT $ lift (m >>* Right) elseError :: Bool -> String -> CheckOptM () -elseError b err = CheckOptM $ if b then throwError err else return () +elseError b err = CheckOptM $ if b then lift $ dieP emptyMeta err else return () +-- TODO use the nearest available meta-tag in the current data forAnyParItems :: (ParItems a -> CheckOptM ()) -> CheckOptM () forAnyParItems = undefined @@ -94,7 +98,7 @@ forAnyAST origF = CheckOptM $ do -- location to begin at and an AST, transforms the tree. Handles any restarts -- that are requested. doTree :: TypeSet -> (a -> RestartT A.AST a CheckOptM ()) -> - [Int] -> A.AST -> ErrorT String (StateT CheckOptData PassM) () + [Int] -> A.AST -> StateT CheckOptData PassM () doTree typeSet f route tr = do x <- traverse typeSet f (Just route) tr case x of @@ -107,7 +111,7 @@ forAnyAST origF = CheckOptM $ do -- location to begin at and an AST, transforms the tree. If any restarts are -- requested, that is indicated in the return value traverse :: TypeSet -> (a -> RestartT A.AST a CheckOptM ()) -> Maybe [Int] -> A.AST -> - ErrorT String (StateT CheckOptData PassM) + StateT CheckOptData PassM (Either (Maybe (Route a A.AST), a -> RestartT A.AST a CheckOptM A.AST) A.AST) traverse typeSet f route tr = deCheckOptM $ flip runReaderT undefined