[project @ 1997-05-26 04:58:32 by sof]
[ghc-hetmet.git] / ghc / compiler / basicTypes / PprEnv.lhs
index a2af9ac..2c4dd1f 100644 (file)
@@ -12,7 +12,7 @@ module PprEnv (
        initPprEnv,
 
        pCon, pLit, pMajBndr, pMinBndr, pOcc, pPrim, pSCC, pStyle,
-       pTy, pTyVar, pUVar, pUse,
+       pTy, pTyVarB, pTyVarO, pUVar, pUse,
        
        NmbrEnv(..),
        SYN_IE(NmbrM), initNmbr,
@@ -25,10 +25,20 @@ module PprEnv (
 
 IMP_Ubiq(){-uitous-}
 
-import Pretty          ( SYN_IE(Pretty) )
-import Unique          ( initRenumberingUniques )
-import UniqFM          ( emptyUFM )
+import Pretty          ( Doc )
+import Outputable
+import Unique          ( initRenumberingUniques, Unique )
+import UniqFM          ( emptyUFM, UniqFM )
 import Util            ( panic )
+#if __GLASGOW_HASKELL__ >= 202
+IMPORT_DELOOPER(TyLoop)
+import Outputable       ( PprStyle )
+import Literal          ( Literal )
+import Usage            ( GenUsage, SYN_IE(Usage) )
+import {-# SOURCE #-}   PrimOp (PrimOp)
+import {-# SOURCE #-}   CostCentre ( CostCentre )
+#endif
+
 \end{code}
 
 For tyvars and uvars, we {\em do} normally use these homogenized
@@ -40,48 +50,52 @@ uncontrollably from changing Unique-based names.
 data PprEnv tyvar uvar bndr occ
   = PE PprStyle                -- stored for safe keeping
 
-       (Literal    -> Pretty)  -- Doing these this way saves
-       (Id    -> Pretty)       -- carrying around a PprStyle
-       (PrimOp     -> Pretty)
-       (CostCentre -> Pretty)
+       (Literal    -> Doc)     -- Doing these this way saves
+       (Id    -> Doc)  -- carrying around a PprStyle
+       (PrimOp     -> Doc)
+       (CostCentre -> Doc)
+
+       (tyvar -> Doc)  -- to print tyvar binders
+       (tyvar -> Doc)  -- to print tyvar occurrences
 
-       (tyvar -> Pretty)       -- to print tyvars
-       (uvar -> Pretty)        -- to print usage vars
+       (uvar -> Doc)   -- to print usage vars
 
-       (bndr -> Pretty)        -- to print "major" val_bdrs
-       (bndr -> Pretty)        -- to print "minor" val_bdrs
-       (occ  -> Pretty)        -- to print bindees
+       (bndr -> Doc)   -- to print "major" val_bdrs
+       (bndr -> Doc)   -- to print "minor" val_bdrs
+       (occ  -> Doc)   -- to print bindees
 
-       (GenType tyvar uvar -> Pretty)
-       (GenUsage uvar -> Pretty)
+       (GenType tyvar uvar -> Doc)
+       (GenUsage uvar -> Doc)
 \end{code}
 
 \begin{code}
 initPprEnv
        :: PprStyle
-       -> Maybe (Literal -> Pretty)
-       -> Maybe (Id -> Pretty)
-       -> Maybe (PrimOp  -> Pretty)
-       -> Maybe (CostCentre -> Pretty)
-       -> Maybe (tyvar -> Pretty)
-       -> Maybe (uvar -> Pretty)
-       -> Maybe (bndr -> Pretty)
-       -> Maybe (bndr -> Pretty)
-       -> Maybe (occ -> Pretty)
-       -> Maybe (GenType tyvar uvar -> Pretty)
-       -> Maybe (GenUsage uvar -> Pretty)
+       -> Maybe (Literal -> Doc)
+       -> Maybe (Id -> Doc)
+       -> Maybe (PrimOp  -> Doc)
+       -> Maybe (CostCentre -> Doc)
+       -> Maybe (tyvar -> Doc)
+       -> Maybe (tyvar -> Doc)
+       -> Maybe (uvar -> Doc)
+       -> Maybe (bndr -> Doc)
+       -> Maybe (bndr -> Doc)
+       -> Maybe (occ -> Doc)
+       -> Maybe (GenType tyvar uvar -> Doc)
+       -> Maybe (GenUsage uvar -> Doc)
        -> PprEnv tyvar uvar bndr occ
 
 -- you can specify all the printers individually; if
 -- you don't specify one, you get bottom
 
-initPprEnv sty l d p c tv uv maj_bndr min_bndr occ ty use
+initPprEnv sty l d p c tvb tvo uv maj_bndr min_bndr occ ty use
   = PE sty
        (demaybe l)
        (demaybe d)
        (demaybe p)
        (demaybe c)
-       (demaybe tv)
+       (demaybe tvb)
+       (demaybe tvo)
        (demaybe uv)
        (demaybe maj_bndr)
        (demaybe min_bndr)
@@ -99,7 +113,7 @@ initPprEnv sty pmaj pmin pocc
   = PE (ppr sty)   -- for a Literal
        (ppr sty)   -- for a DataCon
        (ppr sty)   -- for a PrimOp
-       (\ cc -> ppStr (showCostCentre sty True cc)) -- CostCentre
+       (\ cc -> text (showCostCentre sty True cc)) -- CostCentre
 
        (ppr sty)   -- for a tyvar
        (ppr sty)   -- for a usage var
@@ -112,21 +126,22 @@ initPprEnv sty pmaj pmin pocc
 \end{code}
 
 \begin{code}
-pStyle  (PE s  _  _  _  _  _  _  _  _  _  _  _) = s
-pLit    (PE _ pp  _  _  _  _  _  _  _  _  _  _) = pp
-pCon    (PE _  _ pp  _  _  _  _  _  _  _  _  _) = pp
-pPrim   (PE _  _  _ pp  _  _  _  _  _  _  _  _) = pp
-pSCC    (PE _  _  _  _ pp  _  _  _  _  _  _  _) = pp
-                                              
-pTyVar  (PE _  _  _  _  _ pp  _  _  _  _  _  _) = pp
-pUVar   (PE _  _  _  _  _  _ pp  _  _  _  _  _) = pp
-                                              
-pMajBndr (PE _ _  _  _  _  _  _ pp  _  _  _  _) = pp
-pMinBndr (PE _ _  _  _  _  _  _  _ pp  _  _  _) = pp
-pOcc     (PE _ _  _  _  _  _  _  _  _ pp  _  _) = pp
-                              
-pTy      (PE _ _  _  _  _  _  _  _  _  _ pp  _) = pp
-pUse    (PE _  _  _  _  _  _  _  _  _  _  _ pp) = pp
+pStyle  (PE s  _  _  _  _  _  _  _  _  _  _  _  _) = s
+pLit    (PE _ pp  _  _  _  _  _  _  _  _  _  _  _) = pp
+pCon    (PE _  _ pp  _  _  _  _  _  _  _  _  _  _) = pp
+pPrim   (PE _  _  _ pp  _  _  _  _  _  _  _  _  _) = pp
+pSCC    (PE _  _  _  _ pp  _  _  _  _  _  _  _  _) = pp
+                                                
+pTyVarB         (PE _  _  _  _  _  pp _  _  _  _  _  _  _) = pp
+pTyVarO         (PE _  _  _  _  _  _  pp _  _  _  _  _  _) = pp
+pUVar   (PE _  _  _  _  _  _  _  pp _  _  _  _  _) = pp
+                                                
+pMajBndr (PE _ _  _  _  _  _  _  _ pp  _  _  _  _) = pp
+pMinBndr (PE _ _  _  _  _  _  _  _  _ pp  _  _  _) = pp
+pOcc     (PE _ _  _  _  _  _  _  _  _  _ pp  _  _) = pp
+                                
+pTy      (PE _ _  _  _  _  _  _  _  _  _  _ pp  _) = pp
+pUse    (PE _  _  _  _  _  _  _  _  _  _  _  _ pp) = pp
 \end{code}
 
 We tend to {\em renumber} everything before printing, so that