Skip to content

Commit da0f1a5

Browse files
committed
Error when duplicates encountered
1 parent c337e76 commit da0f1a5

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
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: 9 additions & 7 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,21 +1031,18 @@ 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
1042-
items <- get
1043-
when (OMap.notMember n items) $ do
1045+
whenNotDefined n $ do
10441046
modify (OMap.|> (n, HIGRule $ fmap callToDef r))
10451047
goT0 (body g)
10461048
-- Note that the parameters here may be different, so this doesn't live

0 commit comments

Comments
 (0)