From f8df4df53065fdafc76306e20e5e12b335254042 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 15 Feb 2005 10:06:30 +0000 Subject: record type extension freshness check --- src/GF/Grammar/Lockfield.hs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/GF/Grammar/Lockfield.hs') diff --git a/src/GF/Grammar/Lockfield.hs b/src/GF/Grammar/Lockfield.hs index 3cdfdaa54..f283dde93 100644 --- a/src/GF/Grammar/Lockfield.hs +++ b/src/GF/Grammar/Lockfield.hs @@ -24,6 +24,11 @@ import Operations -- AR 8/2/2005 detached from compile/MkResource lockRecType :: Ident -> Type -> Err Type +lockRecType c t@(RecType rs) = + let lab = lockLabel c in + return $ if elem lab (map fst rs) + then t --- don't add an extra copy of the lock field + else RecType (rs ++ [(lockLabel c, RecType [])]) lockRecType c t = plusRecType t $ RecType [(lockLabel c, RecType [])] unlockRecord :: Ident -> Term -> Err Term -- cgit v1.2.3