X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FPprCore.lhs;h=041b842b811bd24797de20852fe8ba1ead6e4088;hb=53da379cee909d23b9f785c2250e64cba34ad3b2;hp=b87d3815672b36e0b4c103ce5bbaf3fd04271fbf;hpb=aa1c7df20292d9af0b757d71870ae6890a1f9030;p=ghc-hetmet.git diff --git a/compiler/coreSyn/PprCore.lhs b/compiler/coreSyn/PprCore.lhs index b87d381..041b842 100644 --- a/compiler/coreSyn/PprCore.lhs +++ b/compiler/coreSyn/PprCore.lhs @@ -152,11 +152,27 @@ ppr_expr add_par expr@(App {}) } ppr_expr add_par (Case expr var ty [(con,args,rhs)]) + | opt_PprCaseAsLet + = add_par $ + sep [sep [ ptext (sLit "let") + <+> char '{' + <+> ppr_case_pat con args + <+> ptext (sLit "~") + <+> ppr_bndr var + , ptext (sLit "<-") + <+> ppr_expr id expr + , char '}' + <+> ptext (sLit "in") + ] + , pprCoreExpr rhs + ] + + | otherwise = add_par $ sep [sep [ptext (sLit "case") <+> pprCoreExpr expr, ifPprDebug (braces (ppr ty)), sep [ptext (sLit "of") <+> ppr_bndr var, - char '{' <+> ppr_case_pat con args] + char '{' <+> ppr_case_pat con args <+> arrow] ], pprCoreExpr rhs, char '}' @@ -170,7 +186,7 @@ ppr_expr add_par (Case expr var ty alts) <+> pprCoreExpr expr <+> ifPprDebug (braces (ppr ty)), ptext (sLit "of") <+> ppr_bndr var <+> char '{'], - nest 2 (sep (punctuate semi (map pprCoreAlt alts))), + nest 2 (vcat (punctuate semi (map pprCoreAlt alts))), char '}' ] where @@ -218,18 +234,18 @@ ppr_expr add_par (Note (CoreNote s) expr) pprCoreAlt :: OutputableBndr a => (AltCon, [a] , Expr a) -> SDoc pprCoreAlt (con, args, rhs) - = hang (ppr_case_pat con args) 2 (pprCoreExpr rhs) + = hang (ppr_case_pat con args <+> arrow) 2 (pprCoreExpr rhs) ppr_case_pat :: OutputableBndr a => AltCon -> [a] -> SDoc ppr_case_pat (DataAlt dc) args | isTupleTyCon tc - = tupleParens (tupleTyConBoxity tc) (hsep (punctuate comma (map ppr_bndr args))) <+> arrow + = tupleParens (tupleTyConBoxity tc) (hsep (punctuate comma (map ppr_bndr args))) where ppr_bndr = pprBndr CaseBind tc = dataConTyCon dc ppr_case_pat con args - = ppr con <+> sep (map ppr_bndr args) <+> arrow + = ppr con <+> sep (map ppr_bndr args) where ppr_bndr = pprBndr CaseBind @@ -399,8 +415,7 @@ instance Outputable Unfolding where ppr NoUnfolding = ptext (sLit "No unfolding") ppr (OtherCon cs) = ptext (sLit "OtherCon") <+> ppr cs ppr (DFunUnfolding ar con ops) = ptext (sLit "DFun") <> parens (ptext (sLit "arity=") <> int ar) - <+> ppr con - <+> brackets (pprWithCommas pprParendExpr ops) + <+> ppr con <+> brackets (pprWithCommas ppr ops) ppr (CoreUnfolding { uf_src = src , uf_tmpl=rhs, uf_is_top=top, uf_is_value=hnf , uf_is_conlike=conlike, uf_is_cheap=cheap @@ -421,6 +436,11 @@ instance Outputable Unfolding where | otherwise = empty -- Don't print the RHS or we get a quadratic -- blowup in the size of the printout! + +instance Outputable e => Outputable (DFunArg e) where + ppr (DFunPolyArg e) = braces (ppr e) + ppr (DFunConstArg e) = ppr e + ppr (DFunLamArg i) = char '<' <> int i <> char '>' \end{code} -----------------------------------------------------