debugTraceMsg,
) where
--- XXX This define is a bit of a hack, and should be done more nicely
-#define FAST_STRING_NOT_NEEDED 1
#include "HsVersions.h"
import Bag ( Bag, bagToList, isEmptyBag, emptyBag )
import DynFlags ( DynFlags(..), DynFlag(..), dopt )
import StaticFlags ( opt_ErrorSpans )
+import Control.Monad
import System.Exit ( ExitCode(..), exitWith )
import Data.Dynamic
import Data.List
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