summaryrefslogtreecommitdiff
path: root/src/GF/Grammar/Lockfield.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/Grammar/Lockfield.hs')
-rw-r--r--src/GF/Grammar/Lockfield.hs5
1 files changed, 5 insertions, 0 deletions
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