From 5d9e2d8e335eb26bba18f37108ab8ea32d09324d Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sun, 24 Feb 2008 15:54:18 +0000 Subject: [PATCH] Changed rntState so that it "nulls" the bodies of procs and functions first --- transformations/SimplifyTypes.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/transformations/SimplifyTypes.hs b/transformations/SimplifyTypes.hs index 9716efe..cded018 100644 --- a/transformations/SimplifyTypes.hs +++ b/transformations/SimplifyTypes.hs @@ -21,8 +21,10 @@ module SimplifyTypes (simplifyTypes) where import Control.Monad.State import Data.Generics +import qualified Data.Map as Map import qualified AST as A +import CompState import Metadata import Pass import qualified Properties as Prop @@ -47,5 +49,13 @@ resolveNamedTypes = doGeneric `extM` doType -- | Resolve named types in CompState. rntState :: Data t => t -> PassM t -rntState p = (get >>= resolveNamedTypes >>= put) >> return p +rntState p = (get >>= nullBodies >>= resolveNamedTypes >>= put) >> return p + where + nullBodies :: CompState -> PassM CompState + nullBodies st = return $ st {csNames = Map.map nullProcFuncDefs (csNames st)} + + nullProcFuncDefs :: A.NameDef -> A.NameDef + nullProcFuncDefs (A.NameDef m n on nt (A.Proc m' sm fs _) am pl) = (A.NameDef m n on nt (A.Proc m' sm fs (A.Skip m')) am pl) + nullProcFuncDefs (A.NameDef m n on nt (A.Function m' sm ts fs _) am pl) = (A.NameDef m n on nt (A.Function m' sm ts fs (A.Several m' [])) am pl) + nullProcFuncDefs x = x