[commit: ghc] master: ApiAnnotations : AnnComma missing in TupleSection (225df19)

git at git.haskell.org git at git.haskell.org
Fri May 8 07:37:49 UTC 2015


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/225df19a87d8de8245db84d558618f4824631acc/ghc

>---------------------------------------------------------------

commit 225df19a87d8de8245db84d558618f4824631acc
Author: Alan Zimmerman <alan.zimm at gmail.com>
Date:   Fri May 8 09:38:39 2015 +0200

    ApiAnnotations : AnnComma missing in TupleSection
    
    Summary:
    For the following code
    
      {-# LANGUAGE TupleSections #-}
    
      foo = do
        liftIO $ atomicModifyIORef ciTokens ((,()) . f)
    
    the annotation is missing for the comma.
    
    Test Plan: ./validate
    
    Reviewers: hvr, austin
    
    Reviewed By: austin
    
    Subscribers: bgamari, thomie
    
    Differential Revision: https://phabricator.haskell.org/D834
    
    GHC Trac Issues: #10280


>---------------------------------------------------------------

225df19a87d8de8245db84d558618f4824631acc
 compiler/parser/Parser.y                           |  4 +--
 testsuite/tests/ghc-api/annotations/.gitignore     |  1 +
 testsuite/tests/ghc-api/annotations/Makefile       |  5 +++
 testsuite/tests/ghc-api/annotations/T10280.stderr  |  6 ++++
 testsuite/tests/ghc-api/annotations/T10280.stdout  | 36 ++++++++++++++++++++++
 testsuite/tests/ghc-api/annotations/Test10280.hs   |  4 +++
 testsuite/tests/ghc-api/annotations/all.T          |  1 +
 .../ghc-api/annotations/{t10268.hs => t10280.hs}   |  2 +-
 8 files changed, 56 insertions(+), 3 deletions(-)

diff --git a/compiler/parser/Parser.y b/compiler/parser/Parser.y
index 2b57b5a..98d8714 100644
--- a/compiler/parser/Parser.y
+++ b/compiler/parser/Parser.y
@@ -2385,10 +2385,10 @@ texp :: { LHsExpr RdrName }
 tup_exprs :: { [LHsTupArg RdrName] }
            : texp commas_tup_tail
                           {% do { addAnnotation (gl $1) AnnComma (fst $2)
-                                ; return ((L (gl $1) (Present $1)) : snd $2) } }
+                                ; return ((sL1 $1 (Present $1)) : snd $2) } }
 
            | commas tup_tail
-                {% do { mapM_ (\ll -> addAnnotation (gl ll) AnnComma (gl ll)) $2
+                {% do { mapM_ (\ll -> addAnnotation ll AnnComma ll) (fst $1)
                       ; return
                            (let tt = if null $2
                                        then [noLoc missingTupArg]
diff --git a/testsuite/tests/ghc-api/annotations/.gitignore b/testsuite/tests/ghc-api/annotations/.gitignore
index 2280a5a..fc9760f 100644
--- a/testsuite/tests/ghc-api/annotations/.gitignore
+++ b/testsuite/tests/ghc-api/annotations/.gitignore
@@ -6,6 +6,7 @@ listcomps
 t10255
 t10268
 t10269
+t10280
 *.hi
 *.o
 *.run.*
diff --git a/testsuite/tests/ghc-api/annotations/Makefile b/testsuite/tests/ghc-api/annotations/Makefile
index 898db5f..44b2889 100644
--- a/testsuite/tests/ghc-api/annotations/Makefile
+++ b/testsuite/tests/ghc-api/annotations/Makefile
@@ -44,6 +44,11 @@ T10268:
 	'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 -package ghc t10268
 	./t10268 "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`"
 
+T10280:
+	rm -f t10280.o t10280.hi
+	'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 -package ghc t10280
+	./t10280 "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`"
+
 .PHONY: clean annotations parseTree comments exampleTest listcomps
 
 T10269:
diff --git a/testsuite/tests/ghc-api/annotations/T10280.stderr b/testsuite/tests/ghc-api/annotations/T10280.stderr
new file mode 100644
index 0000000..114b95b
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/T10280.stderr
@@ -0,0 +1,6 @@
+
+Test10280.hs:4:8: Not in scope: ‘atomicModifyIORef’
+
+Test10280.hs:4:26: Not in scope: ‘ciTokens’
+
+Test10280.hs:4:44: Not in scope: ‘f’
diff --git a/testsuite/tests/ghc-api/annotations/T10280.stdout b/testsuite/tests/ghc-api/annotations/T10280.stdout
new file mode 100644
index 0000000..82a0eb2
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/T10280.stdout
@@ -0,0 +1,36 @@
+---Problems---------------------
+[
+(AK <no location info> AnnEofPos = [Test10280.hs:5:1])
+]
+
+--------------------------------
+[
+(AK Test10280.hs:1:1 AnnModule = [Test10280.hs:2:1-6])
+
+(AK Test10280.hs:1:1 AnnWhere = [Test10280.hs:2:18-22])
+
+(AK Test10280.hs:4:1-45 AnnEqual = [Test10280.hs:4:6])
+
+(AK Test10280.hs:4:1-45 AnnFunId = [Test10280.hs:4:1-4])
+
+(AK Test10280.hs:4:1-45 AnnSemi = [Test10280.hs:5:1])
+
+(AK Test10280.hs:4:35-45 AnnCloseP = [Test10280.hs:4:45])
+
+(AK Test10280.hs:4:35-45 AnnOpenP = [Test10280.hs:4:35])
+
+(AK Test10280.hs:4:36-40 AnnCloseP = [Test10280.hs:4:40])
+
+(AK Test10280.hs:4:36-40 AnnOpenP = [Test10280.hs:4:36])
+
+(AK Test10280.hs:4:36-44 AnnVal = [Test10280.hs:4:42])
+
+(AK Test10280.hs:4:37 AnnComma = [Test10280.hs:4:37])
+
+(AK Test10280.hs:4:38-39 AnnCloseP = [Test10280.hs:4:39])
+
+(AK Test10280.hs:4:38-39 AnnOpenP = [Test10280.hs:4:38])
+
+(AK <no location info> AnnEofPos = [Test10280.hs:5:1])
+]
+
diff --git a/testsuite/tests/ghc-api/annotations/Test10280.hs b/testsuite/tests/ghc-api/annotations/Test10280.hs
new file mode 100644
index 0000000..08e4186
--- /dev/null
+++ b/testsuite/tests/ghc-api/annotations/Test10280.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE TupleSections #-}
+module Test10280 where
+
+foo2 = atomicModifyIORef ciTokens ((,()) . f)
diff --git a/testsuite/tests/ghc-api/annotations/all.T b/testsuite/tests/ghc-api/annotations/all.T
index 29e22c6..e0834af 100644
--- a/testsuite/tests/ghc-api/annotations/all.T
+++ b/testsuite/tests/ghc-api/annotations/all.T
@@ -6,3 +6,4 @@ test('listcomps',   normal, run_command, ['$MAKE -s --no-print-directory listcom
 test('T10255',      normal, run_command, ['$MAKE -s --no-print-directory t10255'])
 test('T10268',      normal, run_command, ['$MAKE -s --no-print-directory T10268'])
 test('T10269',      normal, run_command, ['$MAKE -s --no-print-directory T10269'])
+test('T10280',      normal, run_command, ['$MAKE -s --no-print-directory T10280'])
diff --git a/testsuite/tests/ghc-api/annotations/t10268.hs b/testsuite/tests/ghc-api/annotations/t10280.hs
similarity index 98%
copy from testsuite/tests/ghc-api/annotations/t10268.hs
copy to testsuite/tests/ghc-api/annotations/t10280.hs
index f956ef1..5ed78af 100644
--- a/testsuite/tests/ghc-api/annotations/t10268.hs
+++ b/testsuite/tests/ghc-api/annotations/t10280.hs
@@ -24,7 +24,7 @@ import Data.Dynamic ( fromDynamic,Dynamic )
 main::IO()
 main = do
         [libdir] <- getArgs
-        testOneFile libdir "Test10268"
+        testOneFile libdir "Test10280"
 
 testOneFile libdir fileName = do
        ((anns,cs),p) <- runGhc (Just libdir) $ do



More information about the ghc-commits mailing list