-pprMaybeTy :: (Eq tyvar, Outputable tyvar, Eq uvar, Outputable uvar)
- => PprStyle -> Maybe (GenType tyvar uvar) -> Pretty
-pprMaybeTy sty Nothing = ppChar '*'
-pprMaybeTy sty (Just ty) = pprParendType sty ty
-\end{code}
-
-This somewhat sleazy interface is used when printing out Core syntax
-(see PprCore):
-\begin{code}
-pprType_Internal sty tvs ppr_tv uvs ppr_uv ty
- = ppr_ty sty (VE tvs ppr_tv uvs ppr_uv) tOP_PREC ty
-\end{code}
-
-\begin{code}
-ppr_ty :: (Eq tyvar, Outputable tyvar, Eq uvar, Outputable uvar)
- => PprStyle -> VarEnv tyvar uvar -> Int
- -> GenType tyvar uvar
- -> Pretty
-
-ppr_ty sty env ctxt_prec (TyVarTy tyvar)
- = ppr_tyvar env tyvar
-
-ppr_ty sty env ctxt_prec (TyConTy tycon usage)
- = ppr sty tycon
-
-ppr_ty sty env ctxt_prec ty@(ForAllTy _ _)
- | showUserishTypes sty = ppr_ty sty env' ctxt_prec body_ty
-
- | otherwise = ppSep [ ppPStr SLIT("_forall_"),
- ppIntersperse pp'SP pp_tyvars,
- ppPStr SLIT("=>"),
- ppr_ty sty env' ctxt_prec body_ty
- ]
- where
- (tyvars, body_ty) = splitForAllTy ty
- env' = foldl add_tyvar env tyvars
- pp_tyvars = map (ppr_tyvar env') tyvars
-
-ppr_ty sty env ctxt_prec (ForAllUsageTy uv uvs ty)
- = panic "ppr_ty:ForAllUsageTy"
-
-ppr_ty sty env ctxt_prec ty@(FunTy (DictTy _ _ _) _ _)
- | showUserishTypes sty
- -- Print a nice looking context (Eq a, Text b) => ...
- = ppSep [ppBesides [ppLparen,
- ppIntersperse pp'SP (map (ppr_dict sty env tOP_PREC) theta),
- ppRparen],
- ppPStr SLIT("=>"),
- ppr_ty sty env ctxt_prec body_ty
- ]
- where
- (theta, body_ty) = splitRhoTy ty
-
-ppr_ty sty env ctxt_prec (FunTy ty1 ty2 usage)
- -- We fiddle the precedences passed to left/right branches,
- -- so that right associativity comes out nicely...
- = maybeParen ctxt_prec fUN_PREC
- (ppCat [ppr_ty sty env fUN_PREC ty1,
- ppPStr SLIT("->"),
- ppr_ty sty env tOP_PREC ty2])
-
-ppr_ty sty env ctxt_prec ty@(AppTy _ _)
- = ppr_corner sty env ctxt_prec fun_ty arg_tys
- where
- (fun_ty, arg_tys) = splitAppTy ty