diff options
Diffstat (limited to 'compiler/GHC/Driver/Session.hs')
-rw-r--r-- | compiler/GHC/Driver/Session.hs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 8f1cd31ece..aaedf4f2d7 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -268,6 +268,7 @@ import Data.Ord import Data.Char import Data.List (intercalate, sortBy) import qualified Data.List.NonEmpty as NE +import qualified Data.Map as Map import qualified Data.Set as Set import System.FilePath import System.Directory @@ -3084,9 +3085,10 @@ nop _ = return () -- | Find the 'FlagSpec' for a 'WarningFlag'. flagSpecOf :: WarningFlag -> Maybe (FlagSpec WarningFlag) -flagSpecOf flag = listToMaybe $ filter check wWarningFlags - where - check fs = flagSpecFlag fs == flag +flagSpecOf = flip Map.lookup wWarningFlagMap + +wWarningFlagMap :: Map.Map WarningFlag (FlagSpec WarningFlag) +wWarningFlagMap = Map.fromListWith (\_ x -> x) $ map (flagSpecFlag &&& id) wWarningFlags -- | These @-W\<blah\>@ flags can all be reversed with @-Wno-\<blah\>@ wWarningFlags :: [FlagSpec WarningFlag] |