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