From f68a6cd31d085868983b6a831d27ccf4543bdb5b Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 24 Oct 2007 15:57:03 +0000 Subject: [PATCH] Added cases for DerefVariable to some functions in Types --- common/Types.hs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/Types.hs b/common/Types.hs index 4419a34..018bc94 100644 --- a/common/Types.hs +++ b/common/Types.hs @@ -180,6 +180,11 @@ typeOfVariable :: (CSM m, Die m) => A.Variable -> m A.Type typeOfVariable (A.Variable m n) = typeOfName n typeOfVariable (A.SubscriptedVariable m s v) = typeOfVariable v >>= subscriptType s +typeOfVariable (A.DerefVariable m v) + = do t <- typeOfVariable v + case t of + (A.Mobile innerT) -> return innerT + _ -> die $ "Tried to dereference a non-mobile variable: " ++ show v typeOfVariable (A.DirectedVariable m dir v) = do t <- typeOfVariable v case t of @@ -191,6 +196,7 @@ abbrevModeOfVariable :: (CSM m, Die m) => A.Variable -> m A.AbbrevMode abbrevModeOfVariable (A.Variable _ n) = abbrevModeOfName n abbrevModeOfVariable (A.SubscriptedVariable _ sub v) = abbrevModeOfVariable v abbrevModeOfVariable (A.DirectedVariable _ _ v) = abbrevModeOfVariable v +abbrevModeOfVariable (A.DerefVariable _ v) = return A.Original dyadicIsBoolean :: A.DyadicOp -> Bool dyadicIsBoolean A.Eq = True