X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FErrUtils.lhs;h=5d3609cb769569b13ed4e0f91ead190eba437609;hb=916214e4f401d70462654013e83c4b8b08e85a18;hp=84e6a17cc2b7f0004447d4bc0a757f339987359d;hpb=e663f7b8508aac0df712250bee90488429fcbad6;p=ghc-hetmet.git diff --git a/ghc/compiler/main/ErrUtils.lhs b/ghc/compiler/main/ErrUtils.lhs index 84e6a17..5d3609c 100644 --- a/ghc/compiler/main/ErrUtils.lhs +++ b/ghc/compiler/main/ErrUtils.lhs @@ -8,12 +8,15 @@ module ErrUtils ( ErrMsg, WarnMsg, Message, Messages, errorsFound, warningsFound, addShortErrLocLine, addShortWarnLocLine, - addErrLocHdrLine, dontAddErrLoc, + addErrLocHdrLine, addWarnLocHdrLine, dontAddErrLoc, printErrorsAndWarnings, pprBagOfErrors, pprBagOfWarnings, + printError, ghcExit, - doIfSet, doIfSet_dyn, dumpIfSet, dumpIfSet_dyn, showPass + doIfSet, doIfSet_dyn, + dumpIfSet, dumpIfSet_core, dumpIfSet_dyn, dumpIfSet_dyn_or, + showPass ) where #include "HsVersions.h" @@ -25,7 +28,7 @@ import Outputable import CmdLineOpts ( DynFlags(..), DynFlag(..), dopt ) import System ( ExitCode(..), exitWith ) -import IO ( hPutStr, stderr ) +import IO ( hPutStr, hPutStrLn, stderr ) \end{code} \begin{code} @@ -37,6 +40,7 @@ type Message = SDoc addShortErrLocLine :: SrcLoc -> Message -> ErrMsg addErrLocHdrLine :: SrcLoc -> Message -> Message -> ErrMsg +addWarnLocHdrLine :: SrcLoc -> Message -> Message -> ErrMsg addShortWarnLocLine :: SrcLoc -> Message -> WarnMsg addShortErrLocLine locn rest_of_err_msg @@ -50,6 +54,12 @@ addErrLocHdrLine locn hdr rest_of_err_msg 4 rest_of_err_msg ) +addWarnLocHdrLine locn hdr rest_of_err_msg + = ( locn + , hang (ppr locn <> colon <+> ptext SLIT("Warning:") <+> hdr) + 4 (rest_of_err_msg) + ) + addShortWarnLocLine locn rest_of_err_msg | isGoodSrcLoc locn = (locn, hang (ppr locn <> colon) 4 (ptext SLIT("Warning:") <+> rest_of_err_msg)) @@ -60,6 +70,10 @@ dontAddErrLoc msg = (noSrcLoc, msg) \end{code} +\begin{code} +printError :: String -> IO () +printError str = hPutStrLn stderr str +\end{code} \begin{code} type Messages = (Bag WarnMsg, Bag ErrMsg) @@ -122,10 +136,24 @@ dumpIfSet flag hdr doc | not flag = return () | otherwise = printDump (dump hdr doc) +dumpIfSet_core :: DynFlags -> DynFlag -> String -> SDoc -> IO () +dumpIfSet_core dflags flag hdr doc + | dopt flag dflags + || verbosity dflags >= 4 + || dopt Opt_D_verbose_core2core dflags = printDump (dump hdr doc) + | otherwise = return () + dumpIfSet_dyn :: DynFlags -> DynFlag -> String -> SDoc -> IO () dumpIfSet_dyn dflags flag hdr doc - | not (dopt flag dflags) && verbosity dflags < 4 = return () - | otherwise = printDump (dump hdr doc) + | dopt flag dflags || verbosity dflags >= 4 = printDump (dump hdr doc) + | otherwise = return () + +dumpIfSet_dyn_or :: DynFlags -> [DynFlag] -> String -> SDoc -> IO () +dumpIfSet_dyn_or dflags flags hdr doc + | or [dopt flag dflags | flag <- flags] + || verbosity dflags >= 4 + = printDump (dump hdr doc) + | otherwise = return () dump hdr doc = vcat [text "",