diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2011-04-20 12:24:38 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2011-04-20 12:24:38 +0100 |
commit | d700bac1dabe26d2fadce661a0ba78664b86bd89 (patch) | |
tree | 2124494efe6c853ffa5b79bbf46346b730752ef8 /compiler | |
parent | f67b457bb0271dd1590efcaa912fc441388531d9 (diff) | |
download | haskell-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.lhs | 13 |
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} |