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
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
= 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
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}