summaryrefslogtreecommitdiff
path: root/libraries/template-haskell/Language/Haskell/TH/Ppr.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/template-haskell/Language/Haskell/TH/Ppr.hs')
-rw-r--r--libraries/template-haskell/Language/Haskell/TH/Ppr.hs16
1 files changed, 12 insertions, 4 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs
index 51e89fda2a..e2af99339f 100644
--- a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs
+++ b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs
@@ -154,8 +154,11 @@ pprExp _ (InfixE me1 op me2) = parens $ pprMaybeExp noPrec me1
pprExp i (LamE [] e) = pprExp i e -- #13856
pprExp i (LamE ps e) = parensIf (i > noPrec) $ char '\\' <> hsep (map (pprPat appPrec) ps)
<+> text "->" <+> ppr e
-pprExp i (LamCaseE ms) = parensIf (i > noPrec)
- $ text "\\case" $$ braces (semiSep ms)
+pprExp i (LamCaseE ms)
+ = parensIf (i > noPrec) $ text "\\case" $$ braces (semiSep ms)
+pprExp i (LamCasesE ms)
+ = parensIf (i > noPrec) $ text "\\cases" $$ braces (semi_sep ms)
+ where semi_sep = sep . punctuate semi . map (pprClause False)
pprExp i (TupE es)
| [Just e] <- es
= pprExp i (ConE (tupleDataName 1) `AppE` e)
@@ -270,6 +273,12 @@ pprBody eq body = case body of
| otherwise = arrow
------------------------------
+pprClause :: Bool -> Clause -> Doc
+pprClause eqDoc (Clause ps rhs ds)
+ = hsep (map (pprPat appPrec) ps) <+> pprBody eqDoc rhs
+ $$ where_clause ds
+
+------------------------------
instance Ppr Lit where
ppr = pprLit noPrec
@@ -652,8 +661,7 @@ instance Ppr RuleBndr where
------------------------------
instance Ppr Clause where
- ppr (Clause ps rhs ds) = hsep (map (pprPat appPrec) ps) <+> pprBody True rhs
- $$ where_clause ds
+ ppr = pprClause True
------------------------------
instance Ppr Con where