Print which flag controls emitted desugaring warnings
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 27 Feb 2016 12:50:10 +0000 (13:50 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 27 Feb 2016 15:35:45 +0000 (16:35 +0100)
This is extends bb5afd3c274011c5ea302210b4c290ec1f83209c to cover
warnings emitted during the desugaring phase.

This implements another part of #10752

Reviewed-by: quchen, bgamari
Differential Revision: https://phabricator.haskell.org/D1954

46 files changed:
compiler/deSugar/Check.hs
compiler/deSugar/Desugar.hs
compiler/deSugar/DsBinds.hs
compiler/deSugar/DsExpr.hs
compiler/deSugar/DsMonad.hs
compiler/deSugar/Match.hs
compiler/deSugar/MatchLit.hs
testsuite/tests/deSugar/should_compile/DsStrictWarn.stderr
testsuite/tests/deSugar/should_compile/GadtOverlap.stderr
testsuite/tests/deSugar/should_compile/T10662.stderr
testsuite/tests/deSugar/should_compile/T2395.stderr
testsuite/tests/deSugar/should_compile/T3263-1.stderr
testsuite/tests/deSugar/should_compile/T3263-2.stderr
testsuite/tests/deSugar/should_compile/T4488.stderr
testsuite/tests/deSugar/should_compile/T5117.stderr
testsuite/tests/deSugar/should_compile/T5455.stderr
testsuite/tests/deSugar/should_compile/ds002.stderr
testsuite/tests/deSugar/should_compile/ds003.stderr
testsuite/tests/deSugar/should_compile/ds019.stderr
testsuite/tests/deSugar/should_compile/ds020.stderr
testsuite/tests/deSugar/should_compile/ds022.stderr
testsuite/tests/deSugar/should_compile/ds043.stderr
testsuite/tests/deSugar/should_compile/ds051.stderr
testsuite/tests/deSugar/should_compile/ds056.stderr
testsuite/tests/deSugar/should_compile/ds058.stderr
testsuite/tests/dependent/should_compile/KindEqualities.stderr
testsuite/tests/driver/werror.stderr
testsuite/tests/gadt/T7294.stderr
testsuite/tests/ghci/scripts/Defer02.stderr
testsuite/tests/ghci/scripts/T3263.stderr
testsuite/tests/numeric/should_compile/T10929.stderr
testsuite/tests/numeric/should_compile/T7881.stderr
testsuite/tests/numeric/should_compile/T7895.stderr
testsuite/tests/numeric/should_compile/T8542.stderr
testsuite/tests/pmcheck/should_compile/T11245.stderr
testsuite/tests/pmcheck/should_compile/T2204.stderr
testsuite/tests/pmcheck/should_compile/T9951b.stderr
testsuite/tests/pmcheck/should_compile/pmc001.stderr
testsuite/tests/pmcheck/should_compile/pmc003.stderr
testsuite/tests/pmcheck/should_compile/pmc004.stderr
testsuite/tests/pmcheck/should_compile/pmc005.stderr
testsuite/tests/pmcheck/should_compile/pmc007.stderr
testsuite/tests/simplCore/should_compile/T6082-RULE.stderr
testsuite/tests/simplCore/should_compile/T7287.stderr
testsuite/tests/th/TH_repUnboxedTuples.stderr
testsuite/tests/typecheck/should_compile/T5490.stderr

index 8fa5414..fe1b4bc 100644 (file)
@@ -1242,15 +1242,19 @@ dsPmWarn dflags ctx@(DsMatchContext kind loc) pm_result
           exists_i = flag_i && notNull inaccessible
           exists_u = flag_u && notNull uncovered
       when exists_r $ forM_ redundant $ \(L l q) -> do
-        putSrcSpanDs l (warnDs (pprEqn q "is redundant"))
+        putSrcSpanDs l (warnDs (Reason Opt_WarnOverlappingPatterns)
+                               (pprEqn q "is redundant"))
       when exists_i $ forM_ inaccessible $ \(L l q) -> do
-        putSrcSpanDs l (warnDs (pprEqn q "has inaccessible right hand side"))
-      when exists_u $ putSrcSpanDs loc (warnDs (pprEqns uncovered))
+        putSrcSpanDs l (warnDs (Reason Opt_WarnOverlappingPatterns)
+                               (pprEqn q "has inaccessible right hand side"))
+      when exists_u $
+        putSrcSpanDs loc (warnDs flag_u_reason (pprEqns uncovered))
   where
     (redundant, uncovered, inaccessible) = pm_result
 
     flag_i = wopt Opt_WarnOverlappingPatterns dflags
     flag_u = exhaustive dflags kind
+    flag_u_reason = maybe NoReason Reason (exhaustiveWarningFlag kind)
 
     -- Print a single clause (for redundant/with-inaccessible-rhs)
     pprEqn q txt = pp_context True ctx (text txt) $ \f -> ppr_eqn f kind q
@@ -1270,7 +1274,7 @@ warnPmIters :: DynFlags -> DsMatchContext -> PmM ()
 warnPmIters dflags (DsMatchContext kind loc)
   = when (flag_i || flag_u) $ do
       iters <- maxPmCheckIterations <$> getDynFlags
-      putSrcSpanDs loc (warnDs (msg iters))
+      putSrcSpanDs loc (warnDs NoReason (msg iters))
   where
     ctxt   = pprMatchContext kind
     msg is = fsep [ text "Pattern match checker exceeded"
@@ -1287,17 +1291,23 @@ dots qs | qs `lengthExceeds` maximum_output = text "..."
 
 -- | Check whether the exhaustiveness checker should run (exhaustiveness only)
 exhaustive :: DynFlags -> HsMatchContext id -> Bool
-exhaustive  dflags (FunRhs {})   = wopt Opt_WarnIncompletePatterns dflags
-exhaustive  dflags CaseAlt       = wopt Opt_WarnIncompletePatterns dflags
-exhaustive _dflags IfAlt         = False
-exhaustive  dflags LambdaExpr    = wopt Opt_WarnIncompleteUniPatterns dflags
-exhaustive  dflags PatBindRhs    = wopt Opt_WarnIncompleteUniPatterns dflags
-exhaustive  dflags ProcExpr      = wopt Opt_WarnIncompleteUniPatterns dflags
-exhaustive  dflags RecUpd        = wopt Opt_WarnIncompletePatternsRecUpd dflags
-exhaustive _dflags ThPatSplice   = False
-exhaustive _dflags PatSyn        = False
-exhaustive _dflags ThPatQuote    = False
-exhaustive _dflags (StmtCtxt {}) = False -- Don't warn about incomplete patterns
+exhaustive  dflags = maybe False (`wopt` dflags) . exhaustiveWarningFlag
+
+-- | Denotes whether an exhaustiveness check is supported, and if so,
+-- via which 'WarningFlag' it's controlled.
+-- Returns 'Nothing' if check is not supported.
+exhaustiveWarningFlag :: HsMatchContext id -> Maybe WarningFlag
+exhaustiveWarningFlag (FunRhs {})   = Just Opt_WarnIncompletePatterns
+exhaustiveWarningFlag CaseAlt       = Just Opt_WarnIncompletePatterns
+exhaustiveWarningFlag IfAlt         = Nothing
+exhaustiveWarningFlag LambdaExpr    = Just Opt_WarnIncompleteUniPatterns
+exhaustiveWarningFlag PatBindRhs    = Just Opt_WarnIncompleteUniPatterns
+exhaustiveWarningFlag ProcExpr      = Just Opt_WarnIncompleteUniPatterns
+exhaustiveWarningFlag RecUpd        = Just Opt_WarnIncompletePatternsRecUpd
+exhaustiveWarningFlag ThPatSplice   = Nothing
+exhaustiveWarningFlag PatSyn        = Nothing
+exhaustiveWarningFlag ThPatQuote    = Nothing
+exhaustiveWarningFlag (StmtCtxt {}) = Nothing -- Don't warn about incomplete patterns
                                        -- in list comprehensions, pattern guards
                                        -- etc. They are often *supposed* to be
                                        -- incomplete
index 1c175f2..6f14b63 100644 (file)
@@ -563,7 +563,7 @@ dsRule (L loc (HsRule name rule_act vars lhs _tv_lhs rhs _fv_rhs))
         -- Substitute the dict bindings eagerly,
         -- and take the body apart into a (f args) form
         ; case decomposeRuleLhs bndrs'' lhs'' of {
-                Left msg -> do { warnDs msg; return Nothing } ;
+                Left msg -> do { warnDs NoReason msg; return Nothing } ;
                 Right (final_bndrs, fn_id, args) -> do
 
         { let is_local = isLocalId fn_id
@@ -598,7 +598,8 @@ warnRuleShadowing rule_name rule_act fn_id arg_ids
       | isLocalId lhs_id || canUnfold (idUnfolding lhs_id)
                        -- If imported with no unfolding, no worries
       , idInlineActivation lhs_id `competesWith` rule_act
-      = warnDs (vcat [ hang (text "Rule" <+> pprRuleName rule_name
+      = warnDs (Reason Opt_WarnInlineRuleShadowing)
+               (vcat [ hang (text "Rule" <+> pprRuleName rule_name
                                <+> text "may never fire")
                             2 (text "because" <+> quotes (ppr lhs_id)
                                <+> text "might inline first")
@@ -608,7 +609,8 @@ warnRuleShadowing rule_name rule_act fn_id arg_ids
 
       | check_rules_too
       , bad_rule : _ <- get_bad_rules lhs_id
-      = warnDs (vcat [ hang (text "Rule" <+> pprRuleName rule_name
+      = warnDs (Reason Opt_WarnInlineRuleShadowing)
+               (vcat [ hang (text "Rule" <+> pprRuleName rule_name
                                <+> text "may never fire")
                             2 (text "because rule" <+> pprRuleName (ruleName bad_rule)
                                <+> text "for"<+> quotes (ppr lhs_id)
index da20686..5bd31a7 100644 (file)
@@ -620,16 +620,16 @@ dsSpec :: Maybe CoreExpr        -- Just rhs => RULE is for a local binding
 dsSpec mb_poly_rhs (L loc (SpecPrag poly_id spec_co spec_inl))
   | isJust (isClassOpId_maybe poly_id)
   = putSrcSpanDs loc $
-    do { warnDs (text "Ignoring useless SPECIALISE pragma for class method selector"
-                 <+> quotes (ppr poly_id))
+    do { warnDs NoReason (text "Ignoring useless SPECIALISE pragma for class method selector"
+                          <+> quotes (ppr poly_id))
        ; return Nothing  }  -- There is no point in trying to specialise a class op
                             -- Moreover, classops don't (currently) have an inl_sat arity set
                             -- (it would be Just 0) and that in turn makes makeCorePair bleat
 
   | no_act_spec && isNeverActive rule_act
   = putSrcSpanDs loc $
-    do { warnDs (text "Ignoring useless SPECIALISE pragma for NOINLINE function:"
-                 <+> quotes (ppr poly_id))
+    do { warnDs NoReason (text "Ignoring useless SPECIALISE pragma for NOINLINE function:"
+                          <+> quotes (ppr poly_id))
        ; return Nothing  }  -- Function is NOINLINE, and the specialiation inherits that
                             -- See Note [Activation pragmas for SPECIALISE]
 
@@ -646,7 +646,7 @@ dsSpec mb_poly_rhs (L loc (SpecPrag poly_id spec_co spec_inl))
          --                         , text "spec_co:" <+> ppr spec_co
          --                         , text "ds_rhs:" <+> ppr ds_lhs ]) $
          case decomposeRuleLhs bndrs ds_lhs of {
-           Left msg -> do { warnDs msg; return Nothing } ;
+           Left msg -> do { warnDs NoReason msg; return Nothing } ;
            Right (rule_bndrs, _fn, args) -> do
 
        { dflags <- getDynFlags
@@ -717,7 +717,7 @@ dsMkUserRule this_mod is_local name act fn bndrs args rhs = do
     let rule = mkRule this_mod False is_local name act fn bndrs args rhs
     dflags <- getDynFlags
     when (isOrphan (ru_orphan rule) && wopt Opt_WarnOrphans dflags) $
-        warnDs (ruleOrphWarn rule)
+        warnDs (Reason Opt_WarnOrphans) (ruleOrphWarn rule)
     return rule
 
 ruleOrphWarn :: CoreRule -> SDoc
index 9219d7e..2320ab4 100644 (file)
@@ -1005,8 +1005,8 @@ warnDiscardedDoBindings rhs rhs_ty
 
            -- Warn about discarding non-() things in 'monadic' binding
        ; if warn_unused && not (isUnitTy norm_elt_ty)
-         then warnDs (badMonadBind rhs elt_ty
-                           (text "-fno-warn-unused-do-bind"))
+         then warnDs (Reason Opt_WarnUnusedDoBind)
+                     (badMonadBind rhs elt_ty)
          else
 
            -- Warn about discarding m a things in 'monadic' binding of the same type,
@@ -1015,20 +1015,20 @@ warnDiscardedDoBindings rhs rhs_ty
                 do { case tcSplitAppTy_maybe norm_elt_ty of
                          Just (elt_m_ty, _)
                             | m_ty `eqType` topNormaliseType fam_inst_envs elt_m_ty
-                            -> warnDs (badMonadBind rhs elt_ty
-                                           (text "-fno-warn-wrong-do-bind"))
+                            -> warnDs (Reason Opt_WarnWrongDoBind)
+                                      (badMonadBind rhs elt_ty)
                          _ -> return () } } }
 
   | otherwise   -- RHS does have type of form (m ty), which is weird
   = return ()   -- but at lesat this warning is irrelevant
 
-badMonadBind :: LHsExpr Id -> Type -> SDoc -> SDoc
-badMonadBind rhs elt_ty flag_doc
+badMonadBind :: LHsExpr Id -> Type -> SDoc
+badMonadBind rhs elt_ty
   = vcat [ hang (text "A do-notation statement discarded a result of type")
               2 (quotes (ppr elt_ty))
          , hang (text "Suppress this warning by saying")
               2 (quotes $ text "_ <-" <+> ppr rhs)
-         , text "or by using the flag" <+>  flag_doc ]
+         ]
 
 {-
 ************************************************************************
index 0d19ff9..79ca265 100644 (file)
@@ -387,12 +387,15 @@ putSrcSpanDs (UnhelpfulSpan {}) thing_inside
 putSrcSpanDs (RealSrcSpan real_span) thing_inside
   = updLclEnv (\ env -> env {dsl_loc = real_span}) thing_inside
 
-warnDs :: SDoc -> DsM ()
-warnDs warn = do { env <- getGblEnv
-                 ; loc <- getSrcSpanDs
-                 ; dflags <- getDynFlags
-                 ; let msg = mkWarnMsg dflags loc (ds_unqual env)  warn
-                 ; updMutVar (ds_msgs env) (\ (w,e) -> (w `snocBag` msg, e)) }
+-- | Emit a warning for the current source location
+warnDs :: WarnReason -> SDoc -> DsM ()
+warnDs reason warn
+  = do { env <- getGblEnv
+       ; loc <- getSrcSpanDs
+       ; dflags <- getDynFlags
+       ; let msg = makeIntoWarning reason $
+                   mkWarnMsg dflags loc (ds_unqual env) warn
+       ; updMutVar (ds_msgs env) (\ (w,e) -> (w `snocBag` msg, e)) }
 
 failWithDs :: SDoc -> DsM a
 failWithDs err
index 763b04f..fc70cc6 100644 (file)
@@ -217,7 +217,7 @@ match vars@(v:_) ty eqns    -- Eqns *can* be empty
                                            case p of PgView e _ -> e:acc
                                                      _ -> acc) [] group) eqns
             maybeWarn [] = return ()
-            maybeWarn l = warnDs (vcat l)
+            maybeWarn l = warnDs NoReason (vcat l)
         in
           maybeWarn $ (map (\g -> text "Putting these view expressions into the same case:" <+> (ppr g))
                        (filter (not . null) gs))
index b1c82cc..c66021f 100644 (file)
@@ -139,9 +139,9 @@ warnAboutIdentities dflags (Var conv_fn) type_of_conv
   , idName conv_fn `elem` conversionNames
   , Just (arg_ty, res_ty) <- splitFunTy_maybe type_of_conv
   , arg_ty `eqType` res_ty  -- So we are converting  ty -> ty
-  = warnDs (vcat [ text "Call of" <+> ppr conv_fn <+> dcolon <+> ppr type_of_conv
+  = warnDs (Reason Opt_WarnIdentities)
+           (vcat [ text "Call of" <+> ppr conv_fn <+> dcolon <+> ppr type_of_conv
                  , nest 2 $ text "can probably be omitted"
-                 , parens (text "Use -fno-warn-identities to suppress this message")
            ])
 warnAboutIdentities _ _ _ = return ()
 
@@ -173,7 +173,8 @@ warnAboutOverflowedLiterals dflags lit
     check :: forall a. (Bounded a, Integral a) => Integer -> Name -> a -> DsM ()
     check i tc _proxy
       = when (i < minB || i > maxB) $ do
-        warnDs (vcat [ text "Literal" <+> integer i
+        warnDs (Reason Opt_WarnOverflowedLiterals)
+               (vcat [ text "Literal" <+> integer i
                        <+> text "is out of the" <+> ppr tc <+> ptext (sLit "range")
                        <+> integer minB <> text ".." <> integer maxB
                      , sug ])
@@ -209,7 +210,7 @@ warnAboutEmptyEnumerations dflags fromExpr mThnExpr toExpr
   , let check :: forall a. (Enum a, Num a) => a -> DsM ()
         check _proxy
           = when (null enumeration) $
-            warnDs (text "Enumeration is empty")
+            warnDs (Reason Opt_WarnEmptyEnumerations) (text "Enumeration is empty")
           where
             enumeration :: [a]
             enumeration = case mThn of
index 974e51c..e5de14f 100644 (file)
@@ -1,4 +1,4 @@
 
-DsStrictWarn.hs:7:11: warning:
+DsStrictWarn.hs:7:11: warning: [-Wincomplete-uni-patterns]
     Pattern match(es) are non-exhaustive
     In a pattern binding: Patterns not matched: []
index 4e3f1c1..02f091e 100644 (file)
@@ -1,4 +1,4 @@
 
-GadtOverlap.hs:19:1: Warning:
+GadtOverlap.hs:19:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘h’: Patterns not matched: T3
index ef93dc3..d818916 100644 (file)
@@ -1,6 +1,5 @@
 
-T10662.hs:3:3: warning:
+T10662.hs:3:3: warning: [-Wunused-do-bind (in -Wall)]
     A do-notation statement discarded a result of type ‘[Char]’
     Suppress this warning by saying
       ‘_ <- ($) return let a = "hello" in a’
-    or by using the flag -fno-warn-unused-do-bind
index fe6498d..d0e8494 100644 (file)
@@ -1,4 +1,4 @@
 
-T2395.hs:13:1: warning:
+T2395.hs:13:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘bar’: bar _ = ...
index b792f1a..a50f893 100644 (file)
@@ -1,10 +1,8 @@
 
-T3263-1.hs:25:3: Warning:
+T3263-1.hs:25:3: warning: [-Wunused-do-bind (in -Wall)]
     A do-notation statement discarded a result of type ‘Int’
     Suppress this warning by saying ‘_ <- nonNullM’
-    or by using the flag -fno-warn-unused-do-bind
 
-T3263-1.hs:35:3: Warning:
+T3263-1.hs:35:3: warning: [-Wunused-do-bind (in -Wall)]
     A do-notation statement discarded a result of type ‘Int’
     Suppress this warning by saying ‘_ <- nonNullM’
-    or by using the flag -fno-warn-unused-do-bind
index 1665d72..83de241 100644 (file)
@@ -1,10 +1,8 @@
 
-T3263-2.hs:25:3: Warning:
+T3263-2.hs:25:3: warning: [-Wwrong-do-bind (in -Wdefault)]
     A do-notation statement discarded a result of type ‘m Int’
     Suppress this warning by saying ‘_ <- return (return 10 :: m Int)’
-    or by using the flag -fno-warn-wrong-do-bind
 
-T3263-2.hs:37:3: Warning:
+T3263-2.hs:37:3: warning: [-Wwrong-do-bind (in -Wdefault)]
     A do-notation statement discarded a result of type ‘m Int’
     Suppress this warning by saying ‘_ <- return (return 10 :: m Int)’
-    or by using the flag -fno-warn-wrong-do-bind
index f3a70cd..3983514 100644 (file)
@@ -1,20 +1,16 @@
 
-T4488.hs:11:11: Warning:
+T4488.hs:11:11: warning: [-Widentities]
     Call of fromIntegral :: Int -> Int
       can probably be omitted
-    (Use -fno-warn-identities to suppress this message)
 
-T4488.hs:17:11: Warning:
+T4488.hs:17:11: warning: [-Widentities]
     Call of toInteger :: Integer -> Integer
       can probably be omitted
-    (Use -fno-warn-identities to suppress this message)
 
-T4488.hs:23:11: Warning:
+T4488.hs:23:11: warning: [-Widentities]
     Call of toRational :: Rational -> Rational
       can probably be omitted
-    (Use -fno-warn-identities to suppress this message)
 
-T4488.hs:29:11: Warning:
+T4488.hs:29:11: warning: [-Widentities]
     Call of realToFrac :: Float -> Float
       can probably be omitted
-    (Use -fno-warn-identities to suppress this message)
index 6ef44c8..1d66704 100644 (file)
@@ -1,4 +1,4 @@
 
-T5117.hs:16:1: warning:
+T5117.hs:16:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f3’: f3 (MyString "a") = ...
index e4214ae..9c43612 100644 (file)
@@ -1,8 +1,8 @@
 
-T5455.hs:8:11: warning:
+T5455.hs:8:11: warning: [-Wincomplete-uni-patterns]
     Pattern match(es) are non-exhaustive
     In a pattern binding: Patterns not matched: []
 
-T5455.hs:13:13: warning:
+T5455.hs:13:13: warning: [-Wincomplete-uni-patterns]
     Pattern match(es) are non-exhaustive
     In a pattern binding: Patterns not matched: []
index c48e532..20705a3 100644 (file)
@@ -1,12 +1,12 @@
 
-ds002.hs:8:1: warning:
+ds002.hs:8:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f y = ...
 
-ds002.hs:9:1: warning:
+ds002.hs:9:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f z = ...
 
-ds002.hs:14:1: warning:
+ds002.hs:14:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘g’: g x y z = ...
index 4851f56..b54ea19 100644 (file)
@@ -1,8 +1,8 @@
 
-ds003.hs:7:1: warning:
+ds003.hs:7:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f (x : x1 : x2 : x3) ~(y, ys) z = ...
 
-ds003.hs:8:1: warning:
+ds003.hs:8:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f x y True = ...
index 1761ad9..67390d4 100644 (file)
@@ -1,12 +1,12 @@
 
-ds019.hs:6:1: warning:
+ds019.hs:6:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f d (j, k) p = ...
 
-ds019.hs:7:1: warning:
+ds019.hs:7:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f (e, f, g) l q = ...
 
-ds019.hs:8:1: warning:
+ds019.hs:8:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f h (m, n) r = ...
index 85abaa4..e046f32 100644 (file)
@@ -1,20 +1,20 @@
 
-ds020.hs:9:1: warning:
+ds020.hs:9:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘a’: a ~(~[], ~[], ~[]) = ...
 
-ds020.hs:12:1: warning:
+ds020.hs:12:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘b’: b ~(~x : ~xs : ~ys) = ...
 
-ds020.hs:19:1: warning:
+ds020.hs:19:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘d’: d ~(n+43) = ...
 
-ds020.hs:20:1: warning:
+ds020.hs:20:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘d’: d ~(n+999) = ...
 
-ds020.hs:23:1: warning:
+ds020.hs:23:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f x@(~[]) = ...
index b5c33bf..81b6de9 100644 (file)
@@ -1,8 +1,8 @@
 
-ds022.hs:24:1: warning:
+ds022.hs:24:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘i’: i 1 0.011e2 = ...
 
-ds022.hs:25:1: warning:
+ds022.hs:25:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘i’: i 2 2.20000 = ...
index c6fb861..3ffb20f 100644 (file)
@@ -1,4 +1,4 @@
 
-ds043.hs:10:3: warning:
+ds043.hs:10:3: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In a case alternative: B {e = True, f = False} -> ...
index 0cf4e1d..a59b7ba 100644 (file)
@@ -1,12 +1,12 @@
 
-ds051.hs:7:1: warning:
+ds051.hs:7:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f1’: f1 "ab" = ...
 
-ds051.hs:12:1: warning:
+ds051.hs:12:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f2’: f2 ('a' : 'b' : []) = ...
 
-ds051.hs:17:1: warning:
+ds051.hs:17:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f3’: f3 "ab" = ...
index 4d605c7..e945a72 100644 (file)
@@ -1,4 +1,4 @@
 
-ds056.hs:10:1: warning:
+ds056.hs:10:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘g’: g _ = ...
index 61aa219..4a08776 100644 (file)
@@ -1,4 +1,4 @@
 
-ds058.hs:7:9: warning:
+ds058.hs:7:9: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In a case alternative: Just _ -> ...
index bb52bb4..af429d1 100644 (file)
@@ -1,5 +1,5 @@
 
-KindEqualities.hs:23:1: warning:
+KindEqualities.hs:23:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘zero’:
         Patterns not matched: (TyApp (TyApp _ _) _)
index 0942496..38bab8b 100644 (file)
@@ -20,11 +20,11 @@ werror.hs:10:1: warning: [-Wmissing-signatures (in -Wall)]
     Top-level binding with no type signature:
       f :: forall t t1. [t] -> [t1]
 
-werror.hs:10:1: warning:
+werror.hs:10:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘f’: Patterns not matched: (_:_)
 
-werror.hs:11:1: warning:
+werror.hs:11:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘f’: f [] = ...
 
index a8ea17d..5fd4ea9 100644 (file)
@@ -1,12 +1,12 @@
-\r
-T7294.hs:25:1: warning:\r
-    Pattern match is redundant\r
-    In an equation for ‘nth’: nth Nil _ = ...\r
-\r
-T7294.hs:25:5: warning:\r
-    • Couldn't match type ‘'True’ with ‘'False’\r
-      Inaccessible code in\r
-        a pattern with constructor: Nil :: forall a. Vec a 'Zero,\r
-        in an equation for ‘nth’\r
-    • In the pattern: Nil\r
-      In an equation for ‘nth’: nth Nil _ = undefined\r
+
+T7294.hs:25:1: warning: [-Woverlapping-patterns (in -Wdefault)]
+    Pattern match is redundant
+    In an equation for ‘nth’: nth Nil _ = ...
+
+T7294.hs:25:5: warning:
+    • Couldn't match type ‘'True’ with ‘'False’
+      Inaccessible code in
+        a pattern with constructor: Nil :: forall a. Vec a 'Zero,
+        in an equation for ‘nth’
+    • In the pattern: Nil
+      In an equation for ‘nth’: nth Nil _ = undefined
index 87171e0..f1d9787 100644 (file)
@@ -17,7 +17,7 @@
     • In the expression: x == x
       In an equation for ‘b’: b x = x == x
 
-../../typecheck/should_run/Defer01.hs:25:1: warning:
+../../typecheck/should_run/Defer01.hs:25:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match has inaccessible right hand side
     In an equation for ‘c’: c (C2 x) = ...
 
       In the type signature:
         k :: (Int ~ Bool) => Int -> Bool
 
-../../typecheck/should_run/Defer01.hs:46:1: warning:
+../../typecheck/should_run/Defer01.hs:46:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In an equation for ‘k’: k x = ...
 
index 737f0bb..df58a5d 100644 (file)
@@ -1,5 +1,4 @@
 
-T3263.hs:8:12: Warning:
+T3263.hs:8:12: warning: [-Wunused-do-bind (in -Wall)]
     A do-notation statement discarded a result of type ‘Char’
     Suppress this warning by saying ‘_ <- getChar’
-    or by using the flag -fno-warn-unused-do-bind
index 8723c42..15c382c 100644 (file)
@@ -1,6 +1,9 @@
 
-T10929.hs:4:6: warning: Enumeration is empty
+T10929.hs:4:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
 
-T10929.hs:22:6: warning: Enumeration is empty
+T10929.hs:22:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
 
-T10929.hs:28:6: warning: Enumeration is empty
+T10929.hs:28:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
index db1dbed..9bcca4f 100644 (file)
@@ -1,6 +1,9 @@
 
-T7881.hs:7:6: Warning: Enumeration is empty
+T7881.hs:7:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
 
-T7881.hs:25:6: Warning: Enumeration is empty
+T7881.hs:25:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
 
-T7881.hs:31:6: Warning: Enumeration is empty
+T7881.hs:31:6: warning: [-Wempty-enumerations (in -Wdefault)]
+    Enumeration is empty
index a4438ef..cf25e80 100644 (file)
@@ -1,6 +1,6 @@
 
-T7895.hs:10:6: Warning:
+T7895.hs:10:6: warning: [-Woverflowed-literals (in -Wdefault)]
     Literal 300 is out of the Word8 range 0..255
 
-T7895.hs:13:6: Warning:
+T7895.hs:13:6: warning: [-Woverflowed-literals (in -Wdefault)]
     Literal -129 is out of the Int8 range -128..127
index b86ccad..f414382 100644 (file)
@@ -1,8 +1,8 @@
 
-T8542.hs:6:6: Warning:
+T8542.hs:6:6: warning: [-Woverflowed-literals (in -Wdefault)]
     Literal 128 is out of the Int8 range -128..127
     If you are trying to write a large negative literal, use NegativeLiterals
 
-T8542.hs:9:5: Warning:
+T8542.hs:9:5: warning: [-Woverflowed-literals (in -Wdefault)]
     Literal 128 is out of the Int8 range -128..127
     If you are trying to write a large negative literal, use NegativeLiterals
index 184029a..4e976a7 100644 (file)
@@ -1,4 +1,4 @@
-\r
-T11245.hs:5:7: warning:\r
-    Pattern match(es) are non-exhaustive\r
-    In an equation for ‘a’: Guards do not cover entire pattern space\r
+
+T11245.hs:5:7: warning: [-Wincomplete-patterns (in -Wextra)]
+    Pattern match(es) are non-exhaustive
+    In an equation for ‘a’: Guards do not cover entire pattern space
index d2e6e0a..c2e2251 100644 (file)
@@ -1,4 +1,5 @@
-T2204.hs:6:1: warning:
+
+T2204.hs:6:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘f’:
         Patterns not matched:
@@ -8,7 +9,7 @@ T2204.hs:6:1: warning:
             ('0':p:_) where p is not one of {'1'}
             ...
 
-T2204.hs:9:1: warning:
+T2204.hs:9:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘g’:
         Patterns not matched: p where p is not one of {0}
index b998ce2..ff6696b 100644 (file)
@@ -1,4 +1,5 @@
-T9951b.hs:7:1: warning:
+
+T9951b.hs:7:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘f’:
         Patterns not matched:
index eb0bd4b..9cd2e25 100644 (file)
@@ -1,4 +1,5 @@
-pmc001.hs:14:1: warning:
+
+pmc001.hs:14:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘f’:
         Patterns not matched:
@@ -7,7 +8,7 @@ pmc001.hs:14:1: warning:
             MkT3 MkT1
             MkT3 (MkT2 _)
 
-pmc001.hs:19:1: warning:
+pmc001.hs:19:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘g’:
         Patterns not matched:
index f156173..03e0df0 100644 (file)
@@ -1,4 +1,4 @@
 
-pmc003.hs:7:1: warning:
+pmc003.hs:7:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match has inaccessible right hand side
     In an equation for ‘f’: f True False = ...
index 37f85d5..7bce243 100644 (file)
@@ -1,4 +1,4 @@
 
-pmc004.hs:16:1: warning:
+pmc004.hs:16:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match has inaccessible right hand side
     In an equation for ‘h’: h _ G1 = ...
index ddb4af9..b7b9cac 100644 (file)
@@ -1,8 +1,8 @@
 
-pmc005.hs:11:1: warning:
+pmc005.hs:11:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘foo’: Patterns not matched: TBool TBool
 
-pmc005.hs:12:1: warning:
+pmc005.hs:12:1: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match has inaccessible right hand side
     In an equation for ‘foo’: foo _ TList = ...
index 291fbdc..f6e4ece 100644 (file)
@@ -1,9 +1,10 @@
-pmc007.hs:7:1: warning:
+
+pmc007.hs:7:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘f’:
         Patterns not matched: p where p is not one of {"ac", "ab"}
 
-pmc007.hs:12:1: warning:
+pmc007.hs:12:1: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In an equation for ‘g’:
         Patterns not matched:
@@ -13,7 +14,7 @@ pmc007.hs:12:1: warning:
             ('a':p:_) where p is not one of {'c', 'b'}
             ...
 
-pmc007.hs:18:11: warning:
+pmc007.hs:18:11: warning: [-Wincomplete-patterns (in -Wextra)]
     Pattern match(es) are non-exhaustive
     In a case alternative:
         Patterns not matched:
index 165a777..7359861 100644 (file)
@@ -1,8 +1,8 @@
 
-T6082-RULE.hs:5:11: warning:
+T6082-RULE.hs:5:11: warning: [-Winline-rule-shadowing (in -Wdefault)]
     Rule "foo1" may never fire because ‘foo1’ might inline first
     Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘foo1’
 
-T6082-RULE.hs:10:11: warning:
+T6082-RULE.hs:10:11: warning: [-Winline-rule-shadowing (in -Wdefault)]
     Rule "foo2" may never fire because ‘foo2’ might inline first
     Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘foo2’
index 66dfe00..5aa71e0 100644 (file)
@@ -1,5 +1,5 @@
 
-T7287.hs:7:3: warning:
+T7287.hs:7:3: warning: [-Winline-rule-shadowing (in -Wdefault)]
     Rule "int2Word#/word2Int#" may never fire
       because rule "word2Int#" for ‘word2Int#’ might fire first
     Probable fix: add phase [n] or [~n] to the competing rule
index bd647ab..45cb29c 100644 (file)
@@ -4,6 +4,6 @@ case (# 'b', GHC.Types.False #) of
     (# 'b', GHC.Types.False #) -> (# "Two", 2 #)
     (# _, _ #) -> (# "Three", 3 #)
 
-TH_repUnboxedTuples.hs:18:13: warning:
+TH_repUnboxedTuples.hs:18:13: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In a case alternative: (# 'a', True #) -> ...
index 4a2bb1f..3cf5b3e 100644 (file)
@@ -1,8 +1,8 @@
 
-T5490.hs:246:5: warning:
+T5490.hs:246:5: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In a case alternative: HDropZero -> ...
 
-T5490.hs:295:5: warning:
+T5490.hs:295:5: warning: [-Woverlapping-patterns (in -Wdefault)]
     Pattern match is redundant
     In a case alternative: _ -> ...