module PprCore (
pprCoreExpr, pprParendExpr,
pprCoreBinding, pprCoreBindings, pprIdBndr,
- pprCoreBinding, pprCoreBindings,
- pprCoreRules, pprCoreRule
+ pprCoreBinding, pprCoreBindings, pprCoreAlt,
+ pprCoreRules, pprCoreRule, pprIdCoreRule
) where
#include "HsVersions.h"
arityInfo, ppArityInfo, ppFlavourInfo, flavourInfo,
specInfo, cprInfo, ppCprInfo,
strictnessInfo, ppStrictnessInfo, cafInfo, ppCafInfo,
- workerInfo, ppWorkerInfo
+ cprInfo, ppCprInfo,
+ workerInfo, ppWorkerInfo,
+ tyGenInfo, ppTyGenInfo
)
import DataCon ( dataConTyCon )
import TyCon ( tupleTyConBoxity, isTupleTyCon )
pprCoreExpr = ppr_noparend_expr pprCoreEnv
pprParendExpr = ppr_parend_expr pprCoreEnv
pprArg = ppr_arg pprCoreEnv
+pprCoreAlt = ppr_alt pprCoreEnv
pprCoreEnv = initCoreEnv pprCoreBinder
\end{code}
= add_par $
sep [sep [ptext SLIT("case") <+> ppr_noparend_expr pe expr,
ptext SLIT("of") <+> ppr_bndr var <+> char '{'],
- nest 4 (sep (punctuate semi (map ppr_alt alts))),
+ nest 4 (sep (punctuate semi (map (ppr_alt pe) alts))),
char '}'
]
where
ppr_bndr = pBndr pe CaseBind
- ppr_alt (con, args, rhs) = hang (ppr_case_pat pe con args)
- 4 (ppr_noparend_expr pe rhs)
-- special cases: let ... in let ...
-- ("disgusting" SLPJ)
ppr_expr add_par pe (Note InlineMe expr)
= add_par $ ptext SLIT("__inline_me") <+> ppr_parend_expr pe expr
-ppr_expr add_par pe (Note (TermUsg u) expr)
- = getPprStyle $ \ sty ->
- if ifaceStyle sty then
- ppr_expr add_par pe expr
- else
- add_par (ppr u <+> ppr_noparend_expr pe expr)
+ppr_alt pe (con, args, rhs)
+ = hang (ppr_case_pat pe con args) 4 (ppr_noparend_expr pe rhs)
ppr_case_pat pe con@(DataAlt dc) args
| isTupleTyCon tc
= hsep [
ppFlavourInfo (flavourInfo info),
ppArityInfo a,
+ ppTyGenInfo g,
ppWorkerInfo (workerInfo info),
ppStrictnessInfo s,
ppCafInfo c,
]
where
a = arityInfo info
+ g = tyGenInfo info
s = strictnessInfo info
c = cafInfo info
m = cprInfo info
pprCoreRules :: Id -> CoreRules -> SDoc
pprCoreRules var (Rules rules _) = vcat (map (pprCoreRule (ppr var)) rules)
+pprIdCoreRule :: IdCoreRule -> SDoc
+pprIdCoreRule (id,rule) = pprCoreRule (ppr id) rule
+
pprCoreRule :: SDoc -> CoreRule -> SDoc
pprCoreRule pp_fn (BuiltinRule _)
= ifPprDebug (ptext SLIT("A built in rule"))