Skip to content

Commit 76ce537

Browse files
committed
Error when duplicates encountered
1 parent c337e76 commit 76ce537

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

nix/shell.nix

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@ let
3636
enable = true;
3737
package = tools.fourmolu;
3838
};
39-
hlint = {
40-
enable = true;
41-
package = tools.hlint;
42-
};
4339
nixpkgs-fmt = {
4440
enable = true;
4541
package = pkgs.nixpkgs-fmt;

src/Codec/CBOR/Cuddle/Huddle.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ import Codec.CBOR.Cuddle.CDDL (CDDL)
9797
import Codec.CBOR.Cuddle.CDDL qualified as C
9898
import Codec.CBOR.Cuddle.CDDL.CtlOp qualified as CtlOp
9999
import Codec.CBOR.Cuddle.Comments qualified as C
100-
import Control.Monad (when)
101100
import Control.Monad.State (MonadState (get), execState, modify)
102101
import Data.ByteString (ByteString)
103102
import Data.Default.Class (Default (..))
@@ -1017,6 +1016,12 @@ collectFrom topRs =
10171016
(traverse goHuddleItem topRs)
10181017
OMap.empty
10191018
where
1019+
whenNotDefined n m = do
1020+
items <- get
1021+
if OMap.notMember n items
1022+
then m
1023+
else error $ "Duplicate definitions found: " <> show n
1024+
10201025
toHuddle items =
10211026
Huddle
10221027
{ roots = concatMap hiRule topRs
@@ -1026,16 +1031,14 @@ collectFrom topRs =
10261031
goHuddleItem (HIGroup g) = goNamedGroup g
10271032
goHuddleItem (HIGRule (Named _ (GRule _ t0) _)) = goT0 t0
10281033
goRule r@(Named n t0 _) = do
1029-
items <- get
1030-
when (OMap.notMember n items) $ do
1034+
whenNotDefined n $ do
10311035
modify (OMap.|> (n, HIRule r))
10321036
goT0 t0
10331037
goChoice f (NoChoice x) = f x
10341038
goChoice f (ChoiceOf x xs) = f x >> goChoice f xs
10351039
goT0 = goChoice goT2
10361040
goNamedGroup r@(Named n g _) = do
1037-
items <- get
1038-
when (OMap.notMember n items) $ do
1041+
whenNotDefined n $ do
10391042
modify (OMap.|> (n, HIGroup r))
10401043
goGroup g
10411044
goGRule r@(Named n g _) = do

0 commit comments

Comments
 (0)