X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FPprEnv.lhs;h=2c4dd1f91368b4acd4f38caaa18b262cb2fe3e23;hb=90164aa3c510d354cfa5709058ad2ac836773763;hp=a2af9ac9b68b1979f1dd8674cbf8bac47cfd59dc;hpb=26741ec416bae2c502ef00a2ba0e79050a32cb67;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/PprEnv.lhs b/ghc/compiler/basicTypes/PprEnv.lhs index a2af9ac..2c4dd1f 100644 --- a/ghc/compiler/basicTypes/PprEnv.lhs +++ b/ghc/compiler/basicTypes/PprEnv.lhs @@ -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