Skip to content

Commit 5e5edac

Browse files
committed
Make flags case-insensitive #397
Pinging @chrisdone. This isn't terribly efficient, since it requires converting to lower case for each comparison. Better would be using the same approach as the case-insensitive library. You think it's worth doing that here?
1 parent c25daaa commit 5e5edac

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
Bug fixes:
1616

1717
* Haddock links to global packages no longer broken on Windows [#375](https://github.com/commercialhaskell/stack/issues/375)
18+
* Make flags case-insensitive [#397](https://github.com/commercialhaskell/stack/issues/397)
1819

1920
## 0.1.0.0
2021

src/Stack/Types/FlagName.hs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import Data.Aeson.Extended
2727
import Data.Attoparsec.ByteString.Char8
2828
import Data.Attoparsec.Combinators
2929
import Data.Binary (Binary)
30+
import qualified Data.ByteString as S
3031
import Data.ByteString.Char8 (ByteString)
3132
import qualified Data.ByteString.Char8 as S8
3233
import Data.Char (isLetter)
@@ -36,6 +37,7 @@ import Data.Map (Map)
3637
import qualified Data.Map as Map
3738
import Data.Text (Text)
3839
import qualified Data.Text.Encoding as T
40+
import qualified Data.Word8 as Word8
3941
import qualified Distribution.PackageDescription as Cabal
4042
import GHC.Generics
4143
import Language.Haskell.TH
@@ -52,7 +54,12 @@ instance Show FlagNameParseFail where
5254
-- | A flag name.
5355
newtype FlagName =
5456
FlagName ByteString
55-
deriving (Eq,Ord,Typeable,Data,Generic,Hashable,Binary)
57+
deriving (Typeable,Data,Generic,Hashable,Binary)
58+
instance Eq FlagName where
59+
x == y = (compare x y) == EQ
60+
instance Ord FlagName where
61+
compare (FlagName x) (FlagName y) =
62+
compare (S.map Word8.toLower x) (S.map Word8.toLower y)
5663

5764
instance Lift FlagName where
5865
lift (FlagName n) =

0 commit comments

Comments
 (0)