Remove -Wtoo-many-guards from default flags (fixes #11316)
authorGeorge Karachalias <george.karachalias@gmail.com>
Tue, 5 Jan 2016 14:59:49 +0000 (15:59 +0100)
committerBen Gamari <ben@smart-cactus.org>
Tue, 5 Jan 2016 21:08:13 +0000 (22:08 +0100)
Since #11316 indicates that having flag `-Wtoo-many-guards`
enabled by default causes issues, the simplest thing is to
remove it. This patch removes it from the default list, it
updates the docs and removes the suppression flags for
`T783` and `types/OptCoercion.hs`

Test Plan: validate

Reviewers: bgamari, austin, goldfire

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1737

GHC Trac Issues: #11316

compiler/main/DynFlags.hs
compiler/types/OptCoercion.hs
docs/users_guide/8.0.1-notes.rst
docs/users_guide/using-warnings.rst
testsuite/tests/perf/compiler/T783.hs

index fcb954e..29c1423 100644 (file)
@@ -3400,7 +3400,6 @@ optLevelFlags -- see Note [Documenting optimisation flags]
 standardWarnings :: [WarningFlag]
 standardWarnings -- see Note [Documenting warning flags]
     = [ Opt_WarnOverlappingPatterns,
-        Opt_WarnTooManyGuards,
         Opt_WarnWarningsDeprecations,
         Opt_WarnDeprecatedFlags,
         Opt_WarnDeferredTypeErrors,
index 41cec21..1038851 100644 (file)
@@ -1,14 +1,10 @@
 -- (c) The University of Glasgow 2006
 
 {-# LANGUAGE CPP #-}
-#if __GLASGOW_HASKELL__ > 710
-{-# OPTIONS_GHC -Wno-too-many-guards #-}
-#endif
  -- This module used to take 10GB of memory to compile with the new
  -- (Nov '15) pattern-match check. In order to be able to compile it,
  -- do not enable -ffull-guard-reasoning. Instead, simplify the guards
- -- (default behaviour when guards are too many) but suppress the
- -- "too-many-guards" warning (-Werror is on).
+ -- (default behaviour when guards are too many).
 
 module OptCoercion ( optCoercion, checkAxInstCo ) where
 
index 1e47d19..08f4800 100644 (file)
@@ -248,8 +248,7 @@ Compiler
 
 -  Added the ``-Wtoo-many-guards`` flag. When enabled, this will issue a
    warning if a pattern match contains too many guards (over 20 at the
-   moment). It is enabled by default but makes a difference only if pattern
-   match checking is also enabled.
+   moment). Makes a difference only if pattern match checking is also enabled.
 
 -  Added the ``-ffull-guard-reasoning`` flag. When enabled, pattern match
    checking tries its best to reason about guards. Since the additional
index 619f701..bc12688 100644 (file)
@@ -545,14 +545,15 @@ of ``-W(no-)*``.
 
     The option ``-Wtoo-many-guards`` warns about places where a
     pattern match contains too many guards (over 20 at the moment).
-    It is enabled by default but has an effect only if any form of
-    exhaustivness/overlapping checking is enabled (one of
+    It has an effect only if any form of exhaustivness/overlapping
+    checking is enabled (one of
     ``-Wincomplete-patterns``,
     ``-Wincomplete-uni-patterns``,
     ``-Wincomplete-record-updates``,
-    ``-Woverlapping-patterns``). The warning can be suppressed by
-    enabling either ``-Wno-too-many-guards``, which just hides the
-    warning, or ``-ffull-guard-reasoning``.
+    ``-Woverlapping-patterns``). When enabled, the warning can be
+    suppressed by enabling either ``-Wno-too-many-guards``, which just
+    hides the warning, or ``-ffull-guard-reasoning`` which runs the
+    full check, independently of the number of guards.
 
 ``-ffull-guard-reasoning``
     .. index::
index cfd6b62..c3ea08d 100644 (file)
@@ -1,8 +1,3 @@
-{-# LANGUAGE CPP #-}
-#if __GLASGOW_HASKELL__ > 710
-{-# OPTIONS_GHC -Wno-too-many-guards #-}
-#endif
-
 module Test where
 
 foo :: Double -> Int