fix -ddump-splices to parenthesize ((\x -> x) a) correctly
authorYuri de Wit <admin@rodlogic.net>
Sat, 9 Jan 2016 17:58:30 +0000 (18:58 +0100)
committerBen Gamari <ben@smart-cactus.org>
Sat, 9 Jan 2016 18:27:47 +0000 (19:27 +0100)
Test Plan: ./validate

Reviewers: goldfire, austin, bgamari

Subscribers: goldfire, osa1, thomie

Differential Revision: https://phabricator.haskell.org/D1114

GHC Trac Issues: #10603

compiler/hsSyn/Convert.hs
testsuite/tests/th/T10603.stderr
testsuite/tests/th/all.T

index 398958d..251fa19 100644 (file)
@@ -712,8 +712,10 @@ cvtl e = wrapL (cvt e)
     cvt (LitE l)
       | overloadedLit l = do { l' <- cvtOverLit l; return $ HsOverLit l' }
       | otherwise       = do { l' <- cvtLit l;     return $ HsLit l' }
-
-    cvt (AppE x y)     = do { x' <- cvtl x; y' <- cvtl y; return $ HsApp x' y' }
+    cvt (AppE x@(LamE _ _) y) = do { x' <- cvtl x; y' <- cvtl y
+                              ; return $ HsApp (mkLHsPar x') y' }
+    cvt (AppE x y)            = do { x' <- cvtl x; y' <- cvtl y
+                              ; return $ HsApp x' y' }
     cvt (LamE ps e)    = do { ps' <- cvtPats ps; e' <- cvtl e
                             ; return $ HsLam (mkMatchGroup FromSource [mkSimpleMatch ps' e']) }
     cvt (LamCaseE ms)  = do { ms' <- mapM cvtMatch ms
index 47f2a7a..c294e74 100644 (file)
@@ -1,6 +1,4 @@
 T10603.hs:5:18-68: Splicing expression
-    [| case Just 'a' of {
-         Just a_atn -> Just ((\ x_ato -> x_ato) a_atn) } |]
+    [| case Just 'a' of { Just a -> Just ((\ x -> x) a) } |]
   ======>
-    case Just 'a' of {
-      Just a_a4uM -> Just ((\ x_a4uN -> x_a4uN) a_a4uM) }
+    case Just 'a' of { Just a -> Just ((\ x -> x) a) }
index 1124360..8b38e3f 100644 (file)
@@ -397,4 +397,4 @@ test('T11341', normal, compile, ['-v0 -dsuppress-uniques'])
 test('T11345', normal, compile_and_run, ['-v0 -dsuppress-uniques'])
 
 test('TH_finalizer', normal, compile, ['-v0'])
-test('T10603', expect_broken(10603), compile, ['-ddump-splices'])
\ No newline at end of file
+test('T10603', normal, compile, ['-ddump-splices -dsuppress-uniques'])