Skip to content
Snippets Groups Projects
Commit fcef26b6 authored by Andreas Klebinger's avatar Andreas Klebinger Committed by Marge Bot
Browse files

Don't indent single alternative case expressions for STG.

Makes the width of STG dumps slightly saner.
Especially for things like unboxing.

Fixes #16580
parent eb2a4df8
No related branches found
No related tags found
1 merge request!779Don't indent single alternative case expressions for STG.
Pipeline #5092 failed
...@@ -831,18 +831,31 @@ pprStgExpr (StgTick tickish expr) ...@@ -831,18 +831,31 @@ pprStgExpr (StgTick tickish expr)
else sep [ ppr tickish, pprStgExpr expr ] else sep [ ppr tickish, pprStgExpr expr ]
-- Don't indent for a single case alternative.
pprStgExpr (StgCase expr bndr alt_type [alt])
= sep [sep [text "case",
nest 4 (hsep [pprStgExpr expr,
whenPprDebug (dcolon <+> ppr alt_type)]),
text "of", pprBndr CaseBind bndr, char '{'],
pprStgAlt False alt,
char '}']
pprStgExpr (StgCase expr bndr alt_type alts) pprStgExpr (StgCase expr bndr alt_type alts)
= sep [sep [text "case", = sep [sep [text "case",
nest 4 (hsep [pprStgExpr expr, nest 4 (hsep [pprStgExpr expr,
whenPprDebug (dcolon <+> ppr alt_type)]), whenPprDebug (dcolon <+> ppr alt_type)]),
text "of", pprBndr CaseBind bndr, char '{'], text "of", pprBndr CaseBind bndr, char '{'],
nest 2 (vcat (map pprStgAlt alts)), nest 2 (vcat (map (pprStgAlt True) alts)),
char '}'] char '}']
pprStgAlt :: OutputablePass pass => GenStgAlt pass -> SDoc
pprStgAlt (con, params, expr) pprStgAlt :: OutputablePass pass => Bool -> GenStgAlt pass -> SDoc
= hang (hsep [ppr con, sep (map (pprBndr CasePatBind) params), text "->"]) pprStgAlt indent (con, params, expr)
4 (ppr expr <> semi) | indent = hang altPattern 4 (ppr expr <> semi)
| otherwise = sep [altPattern, ppr expr <> semi]
where
altPattern = (hsep [ppr con, sep (map (pprBndr CasePatBind) params), text "->"])
pprStgOp :: StgOp -> SDoc pprStgOp :: StgOp -> SDoc
pprStgOp (StgPrimOp op) = ppr op pprStgOp (StgPrimOp op) = ppr op
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment