diff --git a/CompState.hs b/CompState.hs index 37b366e..e1081ec 100644 --- a/CompState.hs +++ b/CompState.hs @@ -31,15 +31,15 @@ import Metadata -- | Modes that Tock can run in. data CompMode = ModeParse | ModeCompile | ModePostC - deriving (Show, Data, Typeable) + deriving (Show, Data, Typeable, Eq) -- | Backends that Tock can use. data CompBackend = BackendC | BackendCPPCSP - deriving (Show, Data, Typeable) - + deriving (Show, Data, Typeable, Eq) + -- | Frontends that Tock can use. data CompFrontend = FrontendOccam | FrontendRain - deriving (Show, Data, Typeable) + deriving (Show, Data, Typeable, Eq) -- | State necessary for compilation. data CompState = CompState { diff --git a/Main.hs b/Main.hs index 25db549..270f223 100644 --- a/Main.hs +++ b/Main.hs @@ -43,8 +43,8 @@ import SimplifyProcs import SimplifyTypes import Unnest -passes :: [(String, Pass)] -passes = +commonPasses :: [(String, Pass)] +commonPasses = [ ("Simplify types", simplifyTypes) , ("Simplify expressions", simplifyExprs) , ("Simplify processes", simplifyProcs) @@ -157,10 +157,14 @@ compile fn ModeParse -> return $ show ast1 ModeCompile -> do progress "Passes:" - ast2 <- case csFrontend optsPS of - FrontendOccam -> (runPasses passes) ast1 - --Run the rain passes, then all the normal occam passes too: - FrontendRain -> ((runPasses rainPasses) ast1) >>= (runPasses passes) + + let passes + = concat [ commonPasses + , if csFrontend optsPS == FrontendRain + then rainPasses + else [] + ] + ast2 <- runPasses passes ast1 debug "{{{ Generate code" let generator