Skip to content

Commit

Permalink
improve name reuse checking - removing a false positive
Browse files Browse the repository at this point in the history
  • Loading branch information
ozgurakgun committed Sep 25, 2024
1 parent df6aa85 commit 03d6014
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/Conjure/Process/Enums.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 03d6014

Please sign in to comment.