Changed chansToAny to use the makeGeneric pass structure

This commit is contained in:
Neil Brown 2008-03-07 23:32:00 +00:00
parent 5ae8aca68e
commit 24ddcf6f0d

View File

@ -135,18 +135,24 @@ chansToAny x = do st <- get
case csFrontend st of case csFrontend st of
FrontendOccam -> FrontendOccam ->
do chansToAnyInCompState do chansToAnyInCompState
everywhereM (mkM $ return . chansToAny') x chansToAnyM x
_ -> return x _ -> return x
where where
chansToAny' :: A.Type -> A.Type chansToAny' :: A.Type -> PassM A.Type
chansToAny' c@(A.Chan _ _ (A.UserProtocol {})) = c chansToAny' c@(A.Chan _ _ (A.UserProtocol {})) = return c
chansToAny' (A.Chan a b _) = A.Chan a b A.Any chansToAny' (A.Chan a b _) = return $ A.Chan a b A.Any
chansToAny' t = t chansToAny' t = doGeneric t
chansToAnyInCompState :: CSM m => m () chansToAnyM :: Data t => t -> PassM t
chansToAnyM = doGeneric `extM` chansToAny'
doGeneric :: Data t => t -> PassM t
doGeneric = makeGeneric chansToAnyM
chansToAnyInCompState :: PassM ()
chansToAnyInCompState = do st <- get chansToAnyInCompState = do st <- get
let st' = st {csNames = everywhere (mkT chansToAny') (csNames st)} csn <- chansToAnyM (csNames st)
put st' put $ st {csNames = csn}
return () return ()
--{{{ top-level --{{{ top-level