From 2d232dd3224bc78cc2de479ee68e2c4e1a03b1b6 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Mon, 23 Mar 2009 15:53:56 +0000 Subject: [PATCH] Fixed subscripting of channel bundles to be corrected like record field subscripts are --- frontends/OccamTypes.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/frontends/OccamTypes.hs b/frontends/OccamTypes.hs index 51a9c59..4d99e5c 100644 --- a/frontends/OccamTypes.hs +++ b/frontends/OccamTypes.hs @@ -645,6 +645,16 @@ addDirections = occamOnlyPass "Add direction specifiers to inputs and outputs" makeEnd :: Meta -> A.Direction -> Transform A.Variable makeEnd m dir v + = case v of + A.SubscriptedVariable _ _ innerV + -> do t <- astTypeOf innerV + case t of + A.ChanDataType {} -> return v + _ -> makeEnd' + _ -> makeEnd' + where + makeEnd' :: PassM A.Variable + makeEnd' = do t <- astTypeOf v case t of A.ChanEnd {} -> return v @@ -1074,6 +1084,9 @@ inferTypes = occamOnlyPass "Infer types" A.Record _ -> do n <- nameToUnscoped wrong return $ A.SubscriptField m n + A.ChanDataType {} -> + do n <- nameToUnscoped wrong + return $ A.SubscriptField m n _ -> return s fixSubscript _ s = return s