aboutsummaryrefslogtreecommitdiff
path: root/haddock-api
diff options
context:
space:
mode:
authorDoug Wilson <dwilson@ricoh.co.nz>2017-06-03 22:02:08 +1200
committerAlex Biehl <alexbiehl@gmail.com>2017-06-03 12:02:08 +0200
commita1b57146c5678b32eb5ac37021e93a81a4b73007 (patch)
tree8bfb5e418930b3af313ba80cf0c26c4a34675c75 /haddock-api
parentc4a06a877be56d5cd790f8abb7928fa39458e1e4 (diff)
Disable pattern match warnings (#628)
This disables the pattern match checker which can be very expensive in some cases. The disabled warnings include: * Opt_WarnIncompletePatterns * Opt_WarnIncompleteUniPatterns * Opt_WarnIncompletePatternsRecUpd * Opt_WarnOverlappingPatterns
Diffstat (limited to 'haddock-api')
-rw-r--r--haddock-api/src/Haddock.hs22
1 files changed, 19 insertions, 3 deletions
diff --git a/haddock-api/src/Haddock.hs b/haddock-api/src/Haddock.hs
index 637ccf2b..080ff926 100644
--- a/haddock-api/src/Haddock.hs
+++ b/haddock-api/src/Haddock.hs
@@ -41,7 +41,7 @@ import Haddock.Utils
import Control.Monad hiding (forM_)
import Control.Applicative
-import Data.Foldable (forM_)
+import Data.Foldable (forM_, foldl')
import Data.List (isPrefixOf)
import Control.Exception
import Data.Maybe
@@ -72,6 +72,8 @@ import Packages
import Panic (handleGhcException)
import Module
import FastString
+import HscTypes
+import GhcMonad
--------------------------------------------------------------------------------
-- * Exception handling
@@ -161,7 +163,6 @@ haddockWithGhc ghc args = handleTopExceptions $ do
hPutStrLn stderr warning
ghc flags' $ do
-
dflags <- getDynFlags
if not (null files) then do
@@ -397,7 +398,11 @@ withGhc' libDir flags ghcActs = runGhc (Just libDir) $ do
ghcMode = CompManager,
ghcLink = NoLink
}
- let dynflags'' = updOptLevel 0 $ gopt_unset dynflags' Opt_SplitObjs
+ -- We disable pattern match warnings because than can be very
+ -- expensive to check
+ let dynflags'' = unsetPatternMatchWarnings $
+ updOptLevel 0 $
+ gopt_unset dynflags' Opt_SplitObjs
defaultCleanupHandler dynflags'' $ do
-- ignore the following return-value, which is a list of packages
-- that may need to be re-linked: Haddock doesn't do any
@@ -414,6 +419,17 @@ withGhc' libDir flags ghcActs = runGhc (Just libDir) $ do
then throwE ("Couldn't parse GHC options: " ++ unwords flags)
else return dynflags'
+unsetPatternMatchWarnings :: DynFlags -> DynFlags
+unsetPatternMatchWarnings dflags =
+ foldl' wopt_unset dflags pattern_match_warnings
+ where
+ pattern_match_warnings =
+ [ Opt_WarnIncompletePatterns
+ , Opt_WarnIncompleteUniPatterns
+ , Opt_WarnIncompletePatternsRecUpd
+ , Opt_WarnOverlappingPatterns
+ ]
+
-------------------------------------------------------------------------------
-- * Misc
-------------------------------------------------------------------------------