Fixed subscripting of channel bundles to be corrected like record field subscripts are

This commit is contained in:
Neil Brown 2009-03-23 15:53:56 +00:00
parent 084861e0be
commit 2d232dd322

View File

@ -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