From 03d6014e5c30dc90f1ddc5f139261a698ae93854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Akg=C3=BCn?= Date: Wed, 25 Sep 2024 19:47:19 +0100 Subject: [PATCH] improve name reuse checking - removing a false positive --- src/Conjure/Process/Enums.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Conjure/Process/Enums.hs b/src/Conjure/Process/Enums.hs index c46be5327..80a22b155 100644 --- a/src/Conjure/Process/Enums.hs +++ b/src/Conjure/Process/Enums.hs @@ -44,7 +44,12 @@ removeEnumsFromModel = preCheckForNameReuse model = do let enumNames = concat [ names | Declaration (LettingDomainDefnEnum _ names) <- mStatements model ] let redefinedTopLevel = [ name | Declaration (FindOrGiven _ name _) <- mStatements model, name `elem` enumNames ] - let redefinedQuantified = [ name | Generator gen <- universeBi (mStatements model), name@Name{} <- universeBi gen, name `elem` enumNames ] + let redefinedQuantified = [ name | Generator gen <- universeBi (mStatements model) + , name@Name{} <- case gen of + GenDomainNoRepr defn _ -> universeBi defn + GenDomainHasRepr defn _ -> universeBi defn + GenInExpr defn _ -> universeBi defn + , name `elem` enumNames ] let redefined = redefinedTopLevel ++ redefinedQuantified let duplicates = [ name | (name, count) <- histogram enumNames, count > 1 ] unless (null duplicates) $ userErr1 $ "Enumerated value defined multiple times:" <+> prettyList id "," duplicates