diff options
author | John Leo <leo@halfaya.org> | 2015-11-07 17:28:37 -0500 |
---|---|---|
committer | Richard Eisenberg <eir@cis.upenn.edu> | 2015-11-07 17:31:06 -0500 |
commit | be8858570274821546ccabf75fe01c3dad80e337 (patch) | |
tree | 46312cca755f0137aae9a58ec62f8887e8ad4253 | |
parent | 6e6438e15f33cb94ad6338e950e693f59d046385 (diff) | |
download | haskell-be8858570274821546ccabf75fe01c3dad80e337.tar.gz |
fix #10734 by adding braces to pretty-printing of let inside doarcpatch-D1448
Test Plan: validate
Reviewers: bgamari, austin, goldfire
Reviewed By: goldfire
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1448
GHC Trac Issues: #10734
-rw-r--r-- | libraries/template-haskell/Language/Haskell/TH/Ppr.hs | 2 | ||||
-rw-r--r-- | testsuite/tests/th/T10734.hs | 10 | ||||
-rw-r--r-- | testsuite/tests/th/T10734.stdout | 3 | ||||
-rw-r--r-- | testsuite/tests/th/all.T | 2 |
4 files changed, 16 insertions, 1 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs index 1768b1550e..223137332f 100644 --- a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs +++ b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs @@ -184,7 +184,7 @@ pprMaybeExp i (Just e) = pprExp i e ------------------------------ instance Ppr Stmt where ppr (BindS p e) = ppr p <+> text "<-" <+> ppr e - ppr (LetS ds) = text "let" <+> ppr ds + ppr (LetS ds) = text "let" <+> (braces $ sep $ punctuate semi $ map ppr ds) ppr (NoBindS e) = ppr e ppr (ParS sss) = sep $ punctuate (text "|") $ map (sep . punctuate comma . map ppr) sss diff --git a/testsuite/tests/th/T10734.hs b/testsuite/tests/th/T10734.hs new file mode 100644 index 0000000000..05aef868b0 --- /dev/null +++ b/testsuite/tests/th/T10734.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE TemplateHaskell #-} +module Main where + +import Language.Haskell.TH + +main :: IO () +main = do + pprint <$> runQ [| do { let { }; return (); } |] >>= putStrLn + pprint <$> runQ [| do { let { x = 5 }; return x; } |] >>= putStrLn + pprint <$> runQ [| do { let { x = 5; y = 3 }; return x; } |] >>= putStrLn diff --git a/testsuite/tests/th/T10734.stdout b/testsuite/tests/th/T10734.stdout new file mode 100644 index 0000000000..4a8b39a43e --- /dev/null +++ b/testsuite/tests/th/T10734.stdout @@ -0,0 +1,3 @@ +do {let {}; GHC.Base.return GHC.Tuple.()} +do {let {x_0 = 5}; GHC.Base.return x_0} +do {let {x_0 = 5; y_1 = 3}; GHC.Base.return x_0} diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T index 2a040f295c..5e8e611b03 100644 --- a/testsuite/tests/th/all.T +++ b/testsuite/tests/th/all.T @@ -364,3 +364,5 @@ test('T10810', normal, compile, ['-v0']) test('T10891', normal, compile, ['-v0']) test('T10945', normal, compile_fail, ['-v0']) test('T10946', expect_broken(10946), compile, ['-v0']) +test('T10734', normal, compile_and_run, ['-v0']) + |