If we are failing due to a warning and -Werror, say so
authorIan Lynagh <igloo@earth.li>
Sun, 16 Mar 2008 19:56:36 +0000 (19:56 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 16 Mar 2008 19:56:36 +0000 (19:56 +0000)
Fixes trac #1893, based on a patch from Daniel Franke.

compiler/main/ErrUtils.lhs

index 72d0e93..455b3bf 100644 (file)
@@ -40,6 +40,7 @@ import SrcLoc         ( srcSpanStart, noSrcSpan )
 import DynFlags                ( DynFlags(..), DynFlag(..), dopt )
 import StaticFlags     ( opt_ErrorSpans )
 
 import DynFlags                ( DynFlags(..), DynFlag(..), dopt )
 import StaticFlags     ( opt_ErrorSpans )
 
+import Control.Monad
 import System.Exit     ( ExitCode(..), exitWith )
 import Data.Dynamic
 import Data.List
 import System.Exit     ( ExitCode(..), exitWith )
 import Data.Dynamic
 import Data.List
@@ -128,10 +129,13 @@ errorsFound dflags (warns, errs)
 
 printErrorsAndWarnings :: DynFlags -> Messages -> IO ()
 printErrorsAndWarnings dflags (warns, errs)
 
 printErrorsAndWarnings :: DynFlags -> Messages -> IO ()
 printErrorsAndWarnings dflags (warns, errs)
-  | no_errs && no_warns  = return ()
-  | no_errs             = printBagOfWarnings dflags warns
-                           -- Don't print any warnings if there are errors
-  | otherwise           = printBagOfErrors   dflags errs
+  | no_errs && no_warns = return ()
+  | no_errs             = do printBagOfWarnings dflags warns
+                             when (dopt Opt_WarnIsError dflags) $
+                                 errorMsg dflags $
+                                     text "\nFailing due to -Werror.\n"
+                          -- Don't print any warnings if there are errors
+  | otherwise           = printBagOfErrors dflags errs
   where
     no_warns = isEmptyBag warns
     no_errs  = isEmptyBag errs
   where
     no_warns = isEmptyBag warns
     no_errs  = isEmptyBag errs