Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
authorIan Lynagh <igloo@earth.li>
Wed, 25 Jul 2012 11:30:43 +0000 (12:30 +0100)
committerIan Lynagh <igloo@earth.li>
Wed, 25 Jul 2012 11:30:43 +0000 (12:30 +0100)
compiler/deSugar/Desugar.lhs
compiler/main/DynFlags.hs
mk/validate-settings.mk

index c1855e4..8e72e1c 100644 (file)
@@ -364,6 +364,7 @@ dsRule (L loc (HsRule name act vars lhs _tv_lhs rhs _fv_rhs))
                   dsLExpr lhs   -- Note [Desugaring RULE left hand sides]
 
        ; rhs' <- dsLExpr rhs
+        ; dflags <- getDynFlags
 
        -- Substitute the dict bindings eagerly,
        -- and take the body apart into a (f args) form
@@ -381,6 +382,7 @@ dsRule (L loc (HsRule name act vars lhs _tv_lhs rhs _fv_rhs))
                                  name act fn_name final_bndrs args final_rhs
 
               inline_shadows_rule   -- Function can be inlined before rule fires
+                | wopt Opt_WarnInlineRuleShadowing dflags
                 = case (idInlineActivation fn_id, act) of
                     (NeverActive, _)    -> False
                     (AlwaysActive, _)   -> True
@@ -389,7 +391,7 @@ dsRule (L loc (HsRule name act vars lhs _tv_lhs rhs _fv_rhs))
                     (ActiveAfter n, ActiveAfter r)    -> r < n  -- Rule active strictly first
                     (ActiveAfter {}, AlwaysActive)    -> False
                     (ActiveAfter {}, ActiveBefore {}) -> False
-                                       
+                | otherwise = False
 
         ; when inline_shadows_rule $
           warnDs (vcat [ hang (ptext (sLit "Rule") <+> doubleQuotes (ftext name)
index 4d41642..6300cf3 100644 (file)
@@ -384,6 +384,7 @@ data WarningFlag =
    | Opt_WarnSafe
    | Opt_WarnPointlessPragmas
    | Opt_WarnUnsupportedCallingConventions
+   | Opt_WarnInlineRuleShadowing
    deriving (Eq, Show, Enum)
 
 data Language = Haskell98 | Haskell2010
@@ -1982,7 +1983,8 @@ fWarningFlags = [
   ( "warn-unsafe",                      Opt_WarnUnsafe, setWarnUnsafe ),
   ( "warn-safe",                        Opt_WarnSafe, setWarnSafe ),
   ( "warn-pointless-pragmas",           Opt_WarnPointlessPragmas, nop ),
-  ( "warn-unsupported-calling-conventions", Opt_WarnUnsupportedCallingConventions, nop ) ]
+  ( "warn-unsupported-calling-conventions", Opt_WarnUnsupportedCallingConventions, nop ),
+  ( "warn-inline-rule-shadowing",       Opt_WarnInlineRuleShadowing, nop ) ]
 
 -- | These @-\<blah\>@ flags can all be reversed with @-no-\<blah\>@
 negatableFlags :: [FlagSpec DynFlag]
index 2d85a0e..ba3b487 100644 (file)
@@ -114,3 +114,5 @@ libraries/binary/src/Data/Binary/Get_HC_OPTS += -fno-warn-warnings-deprecations
 GhcLibHcOpts += -fno-warn-deprecated-flags
 GhcBootLibHcOpts += -fno-warn-deprecated-flags
 
+# Temporarely disable rule shadowing warning
+GhcLibHcOpts += -fno-warn-inline-rule-shadowing