Add pprDefiniteTrace and use it
[ghc-hetmet.git] / compiler / utils / Outputable.lhs
index 37f116c..c4a685b 100644 (file)
@@ -59,9 +59,9 @@ module Outputable (
         mkUserStyle, cmdlineParserStyle, Depth(..),
        
        -- * Error handling and debugging utilities
-       pprPanic, assertPprPanic, pprPanicFastInt, pprPgmError, 
-       pprTrace, warnPprTrace,
-       trace, pgmError, panic, panicFastInt, assertPanic
+       pprPanic, pprSorry, assertPprPanic, pprPanicFastInt, pprPgmError, 
+       pprTrace, pprDefiniteTrace, warnPprTrace,
+       trace, pgmError, panic, sorry, panicFastInt, assertPanic
     ) where
 
 import {-# SOURCE #-}  Module( Module, ModuleName, moduleName )
@@ -82,12 +82,12 @@ import System.IO    ( Handle, stderr, stdout, hFlush )
 import System.FilePath
 
 
-#if __GLASGOW_HASKELL__ >= 700
-import GHC.Show                ( showMultiLineString )
+#if __GLASGOW_HASKELL__ >= 701
+import GHC.Show         ( showMultiLineString )
 #else
 showMultiLineString :: String -> [String]
 -- Crude version
-showMultiLineString s = [s]
+showMultiLineString s = [ showList s "" ]
 #endif
 \end{code}
 
@@ -779,27 +779,38 @@ plural _   = char 's'
 %************************************************************************
 
 \begin{code}
+
 pprPanic :: String -> SDoc -> a
 -- ^ Throw an exception saying "bug in GHC"
-pprPgmError :: String -> SDoc -> a
--- ^ Throw an exception saying "bug in pgm being compiled" (used for unusual program errors)
-pprTrace :: String -> SDoc -> a -> a
--- ^ If debug output is on, show some 'SDoc' on the screen
-
 pprPanic    = pprAndThen panic
 
+pprSorry :: String -> SDoc -> a
+-- ^ Throw an exceptio saying "this isn't finished yet"
+pprSorry    = pprAndThen sorry
+
+
+pprPgmError :: String -> SDoc -> a
+-- ^ Throw an exception saying "bug in pgm being compiled" (used for unusual program errors)
 pprPgmError = pprAndThen pgmError
 
+
+pprTrace :: String -> SDoc -> a -> a
+-- ^ If debug output is on, show some 'SDoc' on the screen
 pprTrace str doc x
    | opt_NoDebugOutput = x
    | otherwise         = pprAndThen trace str doc x
 
+pprDefiniteTrace :: String -> SDoc -> a -> a
+-- ^ Same as pprTrace, but show even if -dno-debug-output is on
+pprDefiniteTrace str doc x = pprAndThen trace str doc x
+
 pprPanicFastInt :: String -> SDoc -> FastInt
 -- ^ Specialization of pprPanic that can be safely used with 'FastInt'
 pprPanicFastInt heading pretty_msg = panicFastInt (show (doc PprDebug))
                             where
                               doc = text heading <+> pretty_msg
 
+
 pprAndThen :: (String -> a) -> String -> SDoc -> a
 pprAndThen cont heading pretty_msg = cont (show (doc PprDebug))
     where