summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2011-04-20 12:24:38 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2011-04-20 12:24:38 +0100
commitd700bac1dabe26d2fadce661a0ba78664b86bd89 (patch)
tree2124494efe6c853ffa5b79bbf46346b730752ef8 /compiler
parentf67b457bb0271dd1590efcaa912fc441388531d9 (diff)
downloadhaskell-d700bac1dabe26d2fadce661a0ba78664b86bd89.tar.gz
Pretty-print type variables that are operators correctly
Fixes Trac #5141. Thanks to Adam Megacz.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/types/TypeRep.lhs13
1 files changed, 8 insertions, 5 deletions
diff --git a/compiler/types/TypeRep.lhs b/compiler/types/TypeRep.lhs
index 85514091a4..7fdf4ae4df 100644
--- a/compiler/types/TypeRep.lhs
+++ b/compiler/types/TypeRep.lhs
@@ -485,9 +485,7 @@ pprKind = pprType
pprParendKind = pprParendType
ppr_type :: Prec -> Type -> SDoc
-ppr_type _ (TyVarTy tv) -- Note [Infix type variables]
- | isSymOcc (getOccName tv) = parens (ppr tv)
- | otherwise = ppr tv
+ppr_type _ (TyVarTy tv) = ppr_tvar tv
ppr_type p (PredTy pred) = maybeParen p TyConPrec $
ifPprDebug (ptext (sLit "<pred>")) <> (ppr pred)
ppr_type p (TyConApp tc tys) = ppr_tc_app p tc tys
@@ -570,14 +568,19 @@ ppr_tc tc
else ptext (sLit "<nt>"))
| otherwise = empty
+ppr_tvar :: TyVar -> SDoc
+ppr_tvar tv -- Note [Infix type variables]
+ | isSymOcc (getOccName tv) = parens (ppr tv)
+ | otherwise = ppr tv
+
-------------------
pprForAll :: [TyVar] -> SDoc
pprForAll [] = empty
pprForAll tvs = ptext (sLit "forall") <+> sep (map pprTvBndr tvs) <> dot
pprTvBndr :: TyVar -> SDoc
-pprTvBndr tv | isLiftedTypeKind kind = ppr tv
- | otherwise = parens (ppr tv <+> dcolon <+> pprKind kind)
+pprTvBndr tv | isLiftedTypeKind kind = ppr_tvar tv
+ | otherwise = parens (ppr_tvar tv <+> dcolon <+> pprKind kind)
where
kind = tyVarKind tv
\end{code}