@@ -47,14 +47,16 @@ quote ('"':cs) = '\\' : '"' : quote cs
47quote (c:cs) = c : quote cs
47quote (c:cs) = c : quote cs
48quote [] = []
48quote [] = []
50−-- | When a flag is specified multiple times, the first occurrence counts. This
50+-- | When a flag is specified multiple times, the last occurrence counts. Flag
51−-- is counter-intuitive, IMHO, but it's how cabal does it. Flag names are
52−-- spelled in all lowercase.
51+-- names are spelled all lowercase.
54-- >>> normalizeCabalFlags [(mkFlagName "foo", True), (mkFlagName "FOO", True), (mkFlagName "Foo", False)]
53-- >>> normalizeCabalFlags [(mkFlagName "foo", True), (mkFlagName "FOO", True), (mkFlagName "Foo", False)]
55−-- [(FlagName "foo",True)]
54+-- [(FlagName "foo",False)]
57normalizeCabalFlags :: FlagAssignment -> FlagAssignment
56normalizeCabalFlags :: FlagAssignment -> FlagAssignment
58−normalizeCabalFlags flags' = nubBy ((==) `on` fst) (sortBy (compare `on` fst) flags)
57+normalizeCabalFlags flags =
59− where
58+ sortBy (compare `on` fst) $
60+ nubBy ((==) `on` fst) $
60− flags = [ (mkFlagName (lowercase (unFlagName n)), b) | (n, b) <- flags' ]
62+ [ (mkFlagName (lowercase (unFlagName n)), b) | (n, b) <- flags ]