[project @ 1997-09-05 16:23:41 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / PprEnv.lhs
index eee6ee9..0962f9a 100644 (file)
@@ -12,23 +12,28 @@ module PprEnv (
        initPprEnv,
 
        pCon, pLit, pMajBndr, pMinBndr, pOcc, pPrim, pSCC, pStyle,
-       pTy, pTyVarB, pTyVarO, pUVar, pUse,
+       pTy, pTyVarB, pTyVarO, pUVar, pUse
        
-       NmbrEnv(..),
-       SYN_IE(NmbrM), initNmbr,
-       returnNmbr, thenNmbr,
-       mapNmbr, mapAndUnzipNmbr
---     nmbr1, nmbr2, nmbr3
---     rnumValVar,   rnumTyVar,   rnumUVar,
---     lookupValVar, lookupTyVar, lookupUVar
     ) where
 
 IMP_Ubiq(){-uitous-}
 
-import Pretty          ( SYN_IE(Pretty) )
-import Unique          ( initRenumberingUniques )
-import UniqFM          ( emptyUFM )
+import Pretty          ( Doc )
+import Outputable
+import Unique          ( Unique )
+import UniqFM          ( emptyUFM, UniqFM )
 import Util            ( panic )
+#if __GLASGOW_HASKELL__ >= 202
+import {-# SOURCE #-}   Type  ( GenType )
+import {-# SOURCE #-}   TyVar ( TyVar   )
+import {-# SOURCE #-}   Id ( Id )
+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,39 +45,39 @@ 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 -> Pretty)       -- to print tyvar binders
-       (tyvar -> Pretty)       -- to print tyvar occurrences
+       (tyvar -> Doc)  -- to print tyvar binders
+       (tyvar -> Doc)  -- to print tyvar occurrences
 
-       (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 (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
@@ -103,7 +108,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
@@ -133,75 +138,3 @@ pOcc     (PE _     _  _  _  _  _  _  _  _  _ pp  _  _) = pp
 pTy      (PE _ _  _  _  _  _  _  _  _  _  _ pp  _) = pp
 pUse    (PE _  _  _  _  _  _  _  _  _  _  _  _ pp) = pp
 \end{code}
-
-We tend to {\em renumber} everything before printing, so that
-we get consistent Uniques on everything from run to run.
-\begin{code}
-data NmbrEnv
-  = NmbrEnv    Unique  -- next "Unique" to give out for a value
-               Unique  -- ... for a tyvar
-               Unique  -- ... for a usage var
-               (UniqFM Id)     -- mapping for value vars we know about
-               (UniqFM TyVar)  -- ... for tyvars
-               (UniqFM Unique{-UVar-}) -- ... for usage vars
-
-type NmbrM a = NmbrEnv -> (NmbrEnv, a)
-
-initNmbr :: NmbrM a -> a
-initNmbr m
-  = let
-       (v1,t1,u1)    = initRenumberingUniques
-       init_nmbr_env = NmbrEnv v1 t1 u1 emptyUFM emptyUFM emptyUFM
-    in
-    snd (m init_nmbr_env)
-
-returnNmbr x nenv = (nenv, x)
-
-thenNmbr m k nenv
-  = let
-       (nenv2, res) = m nenv
-    in
-    k res nenv2
-
-mapNmbr f []     = returnNmbr []
-mapNmbr f (x:xs)
-  = f x                    `thenNmbr` \ r  ->
-    mapNmbr f xs    `thenNmbr` \ rs ->
-    returnNmbr (r:rs)
-
-mapAndUnzipNmbr f [] = returnNmbr ([],[])
-mapAndUnzipNmbr f (x:xs)
-  = f x                            `thenNmbr` \ (r1,  r2)  ->
-    mapAndUnzipNmbr f xs    `thenNmbr` \ (rs1, rs2) ->
-    returnNmbr (r1:rs1, r2:rs2)
-
-{-
-nmbr1 nenv thing x1
-  = let
-       (nenv1, new_x1) = x1 nenv
-    in
-    (nenv1, thing new_x1)
-
-nmbr2 nenv thing x1 x2
-  = let
-       (nenv1, new_x1) = x1 nenv
-       (nenv2, new_x2) = x2 nenv1
-    in
-    (nenv2, thing new_x1 new_x2)
-
-nmbr3 nenv thing x1 x2 x3
-  = let
-       (nenv1, new_x1) = x1 nenv
-       (nenv2, new_x2) = x2 nenv1
-       (nenv3, new_x3) = x3 nenv2
-    in
-    (nenv3, thing new_x1 new_x2 new_x3)
--}
-
-rnumValVar = panic "rnumValVar"
-rnumTyVar = panic "rnumTyVar"
-rnumUVar = panic "rnumUVar"
-lookupValVar = panic "lookupValVar"
-lookupTyVar = panic "lookupTyVar"
-lookupUVar = panic "lookupUVar"
-\end{code}