Make consIORef atomic.
[ghc-hetmet.git] / compiler / utils / Outputable.lhs
index 7350f0a..622138c 100644 (file)
@@ -29,7 +29,7 @@ module Outputable (
        ($$), ($+$), vcat,
        sep, cat, 
        fsep, fcat, 
-       hang, punctuate,
+       hang, punctuate, ppWhen, ppUnless,
        speakNth, speakNTimes, speakN, speakNOf, plural,
 
         -- * Converting 'SDoc' into strings and outputing it
@@ -74,7 +74,7 @@ import Pretty         ( Doc, Mode(..) )
 import Panic
 
 import Data.Char
-import Data.Word       ( Word32 )
+import Data.Word
 import System.IO       ( Handle, stderr, stdout, hFlush )
 import System.FilePath
 \end{code}
@@ -472,6 +472,13 @@ punctuate p (d:ds) = go d ds
                   where
                     go d [] = [d]
                     go d (e:es) = (d <> p) : go e es
+
+ppWhen, ppUnless :: Bool -> SDoc -> SDoc
+ppWhen True  doc = doc
+ppWhen False _   = empty
+
+ppUnless True  _   = empty
+ppUnless False doc = doc
 \end{code}
 
 
@@ -495,9 +502,15 @@ instance Outputable Bool where
 instance Outputable Int where
    ppr n = int n
 
+instance Outputable Word16 where
+   ppr n = integer $ fromIntegral n
+
 instance Outputable Word32 where
    ppr n = integer $ fromIntegral n
 
+instance Outputable Word where
+   ppr n = integer $ fromIntegral n
+
 instance Outputable () where
    ppr _ = text "()"