You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/05/13 12:16:24 UTC
[1/6] groovy git commit: split out LineColumn tests which differ
between the old and new parsers
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_6_X 26e31f1e5 -> 6f78baf82
split out LineColumn tests which differ between the old and new parsers
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0d18108f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0d18108f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0d18108f
Branch: refs/heads/GROOVY_2_6_X
Commit: 0d18108ffe058460e7db90ffa9d33e6b7c22825b
Parents: 26e31f1
Author: paulk <pa...@asert.com.au>
Authored: Fri May 12 01:10:02 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 21:55:21 2017 +1000
----------------------------------------------------------------------
gradle/pomconfigurer.gradle | 3 +
.../org/codehaus/groovy/ast/LineColumnCheck.txt | 78 ----------------
.../groovy/ast/LineColumnCheckTest.groovy | 25 +++--
.../groovy/ast/LineColumnCheck_antlr2.txt | 96 ++++++++++++++++++++
.../groovy/ast/LineColumnCheck_antlr4.txt | 96 ++++++++++++++++++++
5 files changed, 212 insertions(+), 86 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/0d18108f/gradle/pomconfigurer.gradle
----------------------------------------------------------------------
diff --git a/gradle/pomconfigurer.gradle b/gradle/pomconfigurer.gradle
index 3f3f291..4c0f0d6 100644
--- a/gradle/pomconfigurer.gradle
+++ b/gradle/pomconfigurer.gradle
@@ -582,6 +582,9 @@ project.ext.pomConfigureClosureWithoutTweaks = {
contributor {
name 'Alex Popescu'
}
+ contributor {
+ name 'Martin Kempf'
+ }
}
mailingLists {
mailingList {
http://git-wip-us.apache.org/repos/asf/groovy/blob/0d18108f/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
index 635506f..a6f9af4 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
@@ -23,26 +23,6 @@ import java.lang.annotation.*
class A {}
:::[AnnotationNode,(2:1),(2:28)]
-###FieldNode:::
-public class Test {
- public attribute = 6, second = 9
- String prop = "property"
-}
-:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
-[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
-[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
-
-###ifElse:::
-if (expression) {
-
-} else {
-
-}
-:::[IfStatement,(1:1),(5:2)];
-[BooleanExpression,(1:5),(1:15)][VariableExpression,(1:5),(1:15)];
-[BlockStatement,(1:17),(3:3)];
-[BlockStatement,(3:8),(5:2)]
-
###ifWithoutElse:::
if (expression) {
@@ -50,17 +30,6 @@ if (expression) {
}
:::[IfStatement,(1:1),(4:2)];[BlockStatement,(1:17),(4:2)]
-###ifElseIf:::
-if (expression) {
-
-
-} else if (expression2) {
-
-
-}
-:::[IfStatement,(1:1),(7:2)];[BlockStatement,(1:17),(4:3)];
-[IfStatement,(4:8),(7:2)];[BlockStatement,(4:25),(7:2)]
-
###ifNested:::
if (expression) {
@@ -92,53 +61,6 @@ for (a in (1..42)) {
}
:::[ForStatement,(1:1),(4:2)];[BlockStatement,(1:20),(4:2)]
-###tryCatch:::
-try {
-
-} catch(e) {
-
-
-}
-:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(3:3)];
-[CatchStatement,(3:3),(6:2)][BlockStatement,(3:12),(6:2)]
-
-###tryFinally:::
-try {
-
-
-} finally {
-
-}
-:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(4:3)];
-[BlockStatement,(4:3),(6:2)][BlockStatement,(4:11),(6:2)]
-
-###tryCatchFinally():::
-try {
-
-} catch(e) {
-
-} finally {
-
-}
-:::[TryCatchStatement,(1:1),(7:2)][BlockStatement,(1:5),(3:3)];
-[CatchStatement,(3:3),(5:3)][BlockStatement,(3:12),(5:3)];
-[BlockStatement,(5:3),(7:2)][BlockStatement,(5:11),(7:2)]
-
-###tryMultiCatchFinally:::
-try {
-
-} catch(e) {
-
-} catch(e) {
-
-} finally {
-
-}
-:::[TryCatchStatement,(1:1),(9:2)][BlockStatement,(1:5),(3:3)];
-[CatchStatement,(3:3),(5:3)][BlockStatement,(3:12),(5:3)];
-[CatchStatement,(5:3),(7:3)][BlockStatement,(5:12),(7:3)];
-[BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
-
###switchCase:::
switch (expression) {
case 1 : log = 1
http://git-wip-us.apache.org/repos/asf/groovy/blob/0d18108f/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy b/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
index 46a9acf..43aef5a 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
@@ -59,8 +59,11 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
-/*
- * Tests the LineColumn information in file specified in TEST_FILE_PATH
+/**
+ * Tests the LineColumn information in file with path specified by the prefix TEST_FILE_PREFIX.
+ * The base version contains tests that should work with both the antlr2 and antlr4 parser.
+ * The suffixed versions work with just the respective parser. In general, the antlr4 parser
+ * has more accurate line/column information in a number of situations.
*
* The file in the specified path should look like:
*
@@ -80,15 +83,11 @@ import org.junit.runners.Parameterized
* [BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
*
* [<NodeType>,(<line>:<column>),(<lastLine>:<lastColumn>)]
- *
- * @author <a href="mailto:martin.kempf@gmail.com">Martin Kempf</a>
- *
*/
-
@RunWith(Parameterized)
class LineColumnCheckTest extends ASTTest {
- static final String TEST_FILE_PATH = './src/test/org/codehaus/groovy/ast/LineColumnCheck.txt'
+ static final String TEST_FILE_PREFIX = './src/test/org/codehaus/groovy/ast/LineColumnCheck'
private LineCheckVisitor visitor
private String name
@@ -97,7 +96,17 @@ class LineColumnCheckTest extends ASTTest {
@Parameterized.Parameters(name = 'Test {0}: Source: {1} Expected: {2}')
static Iterable<Object[]> data() {
- String content = new File(TEST_FILE_PATH).text
+ List testdata = extractData("${TEST_FILE_PREFIX}.txt")
+ if (System.getProperty('groovy.antlr4') != 'false') {
+ testdata += extractData("${TEST_FILE_PREFIX}_antlr4.txt")
+ } else {
+ testdata += extractData("${TEST_FILE_PREFIX}_antlr2.txt")
+ }
+ testdata
+ }
+
+ private static List extractData(String test_file_path) {
+ String content = new File(test_file_path).text
String[] tests = content.split('###')
tests = tests.drop(1) // remove apache header
List testdata = []
http://git-wip-us.apache.org/repos/asf/groovy/blob/0d18108f/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
new file mode 100644
index 0000000..95866a0
--- /dev/null
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
@@ -0,0 +1,96 @@
+====
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+====
+
+###FieldNode:::
+public class Test {
+ public attribute = 6, second = 9
+ String prop = "property"
+}
+:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
+[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
+[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
+
+###ifElse:::
+if (expression) {
+
+} else {
+
+}
+:::[IfStatement,(1:1),(5:2)];
+[BooleanExpression,(1:5),(1:15)][VariableExpression,(1:5),(1:15)];
+[BlockStatement,(1:17),(3:3)];
+[BlockStatement,(3:8),(5:2)]
+
+###ifElseIf:::
+if (expression) {
+
+
+} else if (expression2) {
+
+
+}
+:::[IfStatement,(1:1),(7:2)];[BlockStatement,(1:17),(4:3)];
+[IfStatement,(4:8),(7:2)];[BlockStatement,(4:25),(7:2)]
+
+###tryCatch:::
+try {
+
+} catch(e) {
+
+
+}
+:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(3:3)];
+[CatchStatement,(3:3),(6:2)][BlockStatement,(3:12),(6:2)]
+
+###tryFinally:::
+try {
+
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(4:3)];
+[BlockStatement,(4:3),(6:2)][BlockStatement,(4:11),(6:2)]
+
+###tryCatchFinally():::
+try {
+
+} catch(e) {
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(7:2)][BlockStatement,(1:5),(3:3)];
+[CatchStatement,(3:3),(5:3)][BlockStatement,(3:12),(5:3)];
+[BlockStatement,(5:3),(7:2)][BlockStatement,(5:11),(7:2)]
+
+###tryMultiCatchFinally:::
+try {
+
+} catch(e) {
+
+} catch(e) {
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(9:2)][BlockStatement,(1:5),(3:3)];
+[CatchStatement,(3:3),(5:3)][BlockStatement,(3:12),(5:3)];
+[CatchStatement,(5:3),(7:3)][BlockStatement,(5:12),(7:3)];
+[BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/0d18108f/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
new file mode 100644
index 0000000..da8d573
--- /dev/null
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
@@ -0,0 +1,96 @@
+====
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+====
+
+###FieldNode:::
+public class Test {
+ public attribute = 6, second = 9
+ String prop = "property"
+}
+:::[FieldNode,(2:2),(2:34)][ConstantExpression,(2:21),(2:22)];
+[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
+[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
+
+###ifElse:::
+if (expression) {
+
+} else {
+
+}
+:::[IfStatement,(1:1),(5:2)];
+[BooleanExpression,(1:4),(1:16)][VariableExpression,(1:4),(1:16)];
+[BlockStatement,(1:17),(3:2)];
+[BlockStatement,(3:8),(5:2)]
+
+###ifElseIf:::
+if (expression) {
+
+
+} else if (expression2) {
+
+
+}
+:::[IfStatement,(1:1),(7:2)];[BlockStatement,(1:17),(4:2)];
+[IfStatement,(4:8),(7:2)];[BlockStatement,(4:25),(7:2)]
+
+###tryCatch:::
+try {
+
+} catch(e) {
+
+
+}
+:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(3:2)];
+[CatchStatement,(3:12),(6:2)][BlockStatement,(3:12),(6:2)]
+
+###tryFinally:::
+try {
+
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(4:2)];
+[BlockStatement,(4:3),(6:2)][BlockStatement,(4:11),(6:2)]
+
+###tryCatchFinally():::
+try {
+
+} catch(e) {
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(7:2)][BlockStatement,(1:5),(3:2)];
+[CatchStatement,(3:12),(5:2)][BlockStatement,(3:12),(5:2)];
+[BlockStatement,(5:3),(7:2)][BlockStatement,(5:11),(7:2)]
+
+###tryMultiCatchFinally:::
+try {
+
+} catch(e) {
+
+} catch(e) {
+
+} finally {
+
+}
+:::[TryCatchStatement,(1:1),(9:2)][BlockStatement,(1:5),(3:2)];
+[CatchStatement,(3:12),(5:2)][BlockStatement,(3:12),(5:2)];
+[CatchStatement,(5:12),(7:2)][BlockStatement,(5:12),(7:2)];
+[BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
[3/6] groovy git commit: split out LineColumn tests which differ
between the old and new parsers (part 3)
Posted by pa...@apache.org.
split out LineColumn tests which differ between the old and new parsers (part 3)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/cf2ead15
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/cf2ead15
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/cf2ead15
Branch: refs/heads/GROOVY_2_6_X
Commit: cf2ead157f5467d4314e8b0a28fbbe6a6cf6604a
Parents: 2deb1e9
Author: paulk <pa...@asert.com.au>
Authored: Fri May 12 20:00:13 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 21:58:40 2017 +1000
----------------------------------------------------------------------
.../org/codehaus/groovy/ast/LineColumnCheck.txt | 57 -------------------
.../groovy/ast/LineColumnCheck_antlr2.txt | 57 +++++++++++++++++++
.../groovy/ast/LineColumnCheck_antlr4.txt | 59 +++++++++++++++++++-
.../apache/groovy/parser/antlr4/AstBuilder.java | 6 +-
4 files changed, 119 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/cf2ead15/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
index 616d9e8..7895ca1 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
@@ -204,47 +204,6 @@ import static java.lang.Math.*
import static java.lang.Math.cos
:::[ClassNode,(1:1),(1:33)]
-###declarationWithFullQualifiedTypeName:::
-java.lang.String s = "Groovy"
-:::[ClassNode,(1:1),(1:18)][DeclarationExpression,(1:1),(1:30)][VariableExpression,(1:18),(1:19)]
-
-###typeArgument:::
-Map<String,Object> map
-:::[ClassNode,(1:1),(1:4)];
-[GenericsType,(1:5),(1:11)][ClassNode,(1:5),(1:11)];
-[GenericsType,(1:12),(1:18)][ClassNode,(1:12),(1:18)]
-
-###typeArgumentFullQualifiedTypeName:::
-Map<java.lang.String,java.lang.Object> map
-:::[ClassNode,(1:1),(1:4)][GenericsType,(1:5),(1:21)][ClassNode,(1:5),(1:21)];
-[GenericsType,(1:22),(1:38)][ClassNode,(1:22),(1:38)]
-
-###typeArgumentUpperBound:::
-Collection<? extends File> c
-:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:26)][ClassNode,(-1:-1),(-1:-1)];
-[ClassNode,(1:22),(1:26)]
-
-###typeArgumentLowerBound:::
-Collection<? super File> c
-:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:24)][ClassNode,(-1:-1),(-1:-1)];
-[ClassNode,(1:20),(1:24)]
-
-###typeArgumentsLowerAndUpperBound:::
-Collection<? extends String,? super File> c
-:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:28)][ClassNode,(-1:-1),(-1:-1)][ClassNode,(1:22),(1:28)];
-[GenericsType,(1:29),(1:41)][ClassNode,(-1:-1),(-1:-1)][ClassNode,(1:37),(1:41)]
-
-###typeArgumentNested:::
-class C<Y,T extends Map<String,Map<Y,Integer>>> {}
-:::[ClassNode,(1:1),(1:51)][GenericsType,(1:9),(1:10)][ClassNode,(1:9),(1:10)];
-[GenericsType,(1:11),(1:49)][ClassNode,(1:11),(1:12)][ClassNode,(1:21),(1:49)];
-[GenericsType,(1:25),(1:31)][ClassNode,(1:25),(1:31)][GenericsType,(1:32),(1:49)][ClassNode,(1:32),(1:35)];
-[GenericsType,(1:36),(1:37)][ClassNode,(1:36),(1:37)][GenericsType,(1:38),(1:45)][ClassNode,(1:38),(1:45)]
-
-###typeArugmentInConstructorCall:::
-ArrayList<String> list = new ArrayList<String>()
-:::[ClassNode,(1:30),(1:39)][GenericsType,(1:40),(1:46)][ClassNode,(1:40),(1:46)]
-
###castExpressionClassNode:::
String s = (String)i
:::[ClassNode,(1:13),(1:19)]
@@ -261,22 +220,6 @@ String s = i as String
String s = i as java.lang.String
:::[ClassNode,(1:17),(1:33)]
-###PropertyExpressionStaticField:::
-class PropertyExpression {
- static field
- static method() {
- PropertyExpression.field = 42
- }
-}
-:::[PropertyExpression,(4:9),(4:34)]
-
-###PropertyExpressionNormal:::
-class TestClass {
- TestClass prop
-}
-TestClass.prop.prop = 42
-:::[PropertyExpression,(4:1),(4:21)][PropertyExpression,(4:1),(4:15)]
-
###MethodPointerExpression:::
def selection = list.find (entry.&validate)
:::[MethodPointerExpression,(1:28),(1:43)][VariableExpression,(1:28),(1:33)][ConstantExpression,(1:35),(1:43)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/cf2ead15/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
index 5da0000..dd70f0a 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
@@ -174,3 +174,60 @@ def method() throws java.lang.Exception {}
###throwsClauseMultiQualifiedName:::
def method() throws java.lang.Exception, java.lang.RuntimeException {}
:::[ClassNode,(1:21),(1:40)][ClassNode,(1:42),(1:69)]
+
+###declarationWithFullQualifiedTypeName:::
+java.lang.String s = "Groovy"
+:::[ClassNode,(1:1),(1:18)][DeclarationExpression,(1:1),(1:30)][VariableExpression,(1:18),(1:19)]
+
+###typeArgument:::
+Map<String,Object> map
+:::[ClassNode,(1:1),(1:4)];
+[GenericsType,(1:5),(1:11)][ClassNode,(1:5),(1:11)];
+[GenericsType,(1:12),(1:18)][ClassNode,(1:12),(1:18)]
+
+###typeArgumentFullQualifiedTypeName:::
+Map<java.lang.String,java.lang.Object> map
+:::[ClassNode,(1:1),(1:4)][GenericsType,(1:5),(1:21)][ClassNode,(1:5),(1:21)];
+[GenericsType,(1:22),(1:38)][ClassNode,(1:22),(1:38)]
+
+###typeArgumentUpperBound:::
+Collection<? extends File> c
+:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:26)][ClassNode,(-1:-1),(-1:-1)];
+[ClassNode,(1:22),(1:26)]
+
+###typeArgumentLowerBound:::
+Collection<? super File> c
+:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:24)][ClassNode,(-1:-1),(-1:-1)];
+[ClassNode,(1:20),(1:24)]
+
+###typeArgumentsLowerAndUpperBound:::
+Collection<? extends String,? super File> c
+:::[ClassNode,(1:1),(1:11)][GenericsType,(1:12),(1:28)][ClassNode,(-1:-1),(-1:-1)][ClassNode,(1:22),(1:28)];
+[GenericsType,(1:29),(1:41)][ClassNode,(-1:-1),(-1:-1)][ClassNode,(1:37),(1:41)]
+
+###typeArgumentNested:::
+class C<Y,T extends Map<String,Map<Y,Integer>>> {}
+:::[ClassNode,(1:1),(1:51)][GenericsType,(1:9),(1:10)][ClassNode,(1:9),(1:10)];
+[GenericsType,(1:11),(1:49)][ClassNode,(1:11),(1:12)][ClassNode,(1:21),(1:49)];
+[GenericsType,(1:25),(1:31)][ClassNode,(1:25),(1:31)][GenericsType,(1:32),(1:49)][ClassNode,(1:32),(1:35)];
+[GenericsType,(1:36),(1:37)][ClassNode,(1:36),(1:37)][GenericsType,(1:38),(1:45)][ClassNode,(1:38),(1:45)]
+
+###typeArgumentInConstructorCall:::
+ArrayList<String> list = new ArrayList<String>()
+:::[ClassNode,(1:30),(1:39)][GenericsType,(1:40),(1:46)][ClassNode,(1:40),(1:46)]
+
+###PropertyExpressionStaticField:::
+class PropertyExpression {
+ static field
+ static method() {
+ PropertyExpression.field = 42
+ }
+}
+:::[PropertyExpression,(4:9),(4:34)]
+
+###PropertyExpressionNormal:::
+class TestClass {
+ TestClass prop
+}
+TestClass.prop.prop = 42
+:::[PropertyExpression,(4:1),(4:21)][PropertyExpression,(4:1),(4:15)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/cf2ead15/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
index 2b43cc3..f959523 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
@@ -23,7 +23,7 @@ public class Test {
String prop = "property"
}
:::[FieldNode,(2:2),(2:34)][ConstantExpression,(2:21),(2:22)];
-[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
+[FieldNode,(2:2),(2:34)][ConstantExpression,(2:33),(2:34)];
[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
###ifElse:::
@@ -174,3 +174,60 @@ def method() throws java.lang.Exception {}
###throwsClauseMultiQualifiedName:::
def method() throws java.lang.Exception, java.lang.RuntimeException {}
:::[ClassNode,(1:21),(1:40)][ClassNode,(1:42),(1:68)]
+
+###declarationWithFullQualifiedTypeName:::
+java.lang.String s = "Groovy"
+:::[ClassNode,(1:1),(1:17)][DeclarationExpression,(1:1),(1:30)][VariableExpression,(1:18),(1:19)]
+
+###typeArgument:::
+Map<String,Object> map
+:::[ClassNode,(1:1),(1:19)];
+[GenericsType,(1:5),(1:11)][ClassNode,(1:5),(1:11)];
+[GenericsType,(1:12),(1:18)][ClassNode,(1:12),(1:18)]
+
+###typeArgumentFullQualifiedTypeName:::
+Map<java.lang.String,java.lang.Object> map
+:::[ClassNode,(1:1),(1:39)][GenericsType,(1:5),(1:21)][ClassNode,(1:5),(1:21)];
+[GenericsType,(1:22),(1:38)][ClassNode,(1:22),(1:38)]
+
+###typeArgumentUpperBound:::
+Collection<? extends File> c
+:::[ClassNode,(1:1),(1:27)][GenericsType,(1:12),(1:26)][ClassNode,(1:12),(1:13)];
+[ClassNode,(1:22),(1:26)]
+
+###typeArgumentLowerBound:::
+Collection<? super File> c
+:::[ClassNode,(1:1),(1:25)][GenericsType,(1:12),(1:24)][ClassNode,(1:12),(1:13)];
+[ClassNode,(1:20),(1:24)]
+
+###typeArgumentsLowerAndUpperBound:::
+Collection<? extends String,? super File> c
+:::[ClassNode,(1:1),(1:42)][GenericsType,(1:12),(1:28)][ClassNode,(1:12),(1:13)][ClassNode,(1:22),(1:28)];
+[GenericsType,(1:29),(1:41)][ClassNode,(1:29),(1:30)][ClassNode,(1:37),(1:41)]
+
+###typeArgumentNested:::
+class C<Y,T extends Map<String,Map<Y,Integer>>> {}
+:::[ClassNode,(1:1),(1:51)][GenericsType,(1:9),(1:10)][ClassNode,(1:9),(1:10)];
+[GenericsType,(1:11),(1:47)][ClassNode,(1:11),(1:47)][ClassNode,(1:21),(1:47)];
+[GenericsType,(1:25),(1:31)][ClassNode,(1:25),(1:31)][GenericsType,(1:32),(1:46)][ClassNode,(1:32),(1:46)];
+[GenericsType,(1:36),(1:37)][ClassNode,(1:36),(1:37)][GenericsType,(1:38),(1:45)][ClassNode,(1:38),(1:45)]
+
+###typeArgumentInConstructorCall:::
+ArrayList<String> list = new ArrayList<String>()
+:::[ClassNode,(1:30),(1:47)][GenericsType,(1:40),(1:46)][ClassNode,(1:40),(1:46)]
+
+###PropertyExpressionStaticField:::
+class PropertyExpression {
+ static field
+ static method() {
+ PropertyExpression.field = 42
+ }
+}
+:::[PropertyExpression,(4:9),(4:33)]
+
+###PropertyExpressionNormal:::
+class TestClass {
+ TestClass prop
+}
+TestClass.prop.prop = 42
+:::[PropertyExpression,(4:1),(4:20)][PropertyExpression,(4:10),(4:15)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/cf2ead15/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index f0c490a..b193083 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -281,7 +281,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
if (hasStar) { // e.g. import static java.lang.Math.*
String qualifiedName = this.visitQualifiedName(ctx.qualifiedName());
ClassNode type = ClassHelper.make(qualifiedName);
-
+ this.configureAST(type, ctx);
moduleNode.addStaticStarImport(type.getText(), type, annotationNodeList);
@@ -306,6 +306,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
String alias = hasAlias
? ctx.alias.getText()
: name;
+ this.configureAST(classNode, ctx);
moduleNode.addStaticImport(classNode, name, alias, annotationNodeList);
@@ -325,6 +326,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
String alias = hasAlias
? ctx.alias.getText()
: name;
+ this.configureAST(classNode, ctx);
moduleNode.addImport(alias, classNode, annotationNodeList);
@@ -1191,7 +1193,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
public GenericsType visitTypeParameter(TypeParameterContext ctx) {
return this.configureAST(
new GenericsType(
- ClassHelper.make(this.visitClassName(ctx.className())),
+ this.configureAST(ClassHelper.make(this.visitClassName(ctx.className())), ctx),
this.visitTypeBound(ctx.typeBound()),
null
),
[6/6] groovy git commit: minor refactor after 'Refine node position
of fields'
Posted by pa...@apache.org.
minor refactor after 'Refine node position of fields'
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6f78baf8
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6f78baf8
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6f78baf8
Branch: refs/heads/GROOVY_2_6_X
Commit: 6f78baf82e18c47d4ffc1dfb8bc3a8cfd190b3ed
Parents: d822809
Author: paulk <pa...@asert.com.au>
Authored: Sat May 13 21:51:55 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 22:01:46 2017 +1000
----------------------------------------------------------------------
src/test/org/codehaus/groovy/ast/LineColumnCheck.txt | 9 +++++++++
src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt | 9 ---------
src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt | 9 ---------
3 files changed, 9 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/6f78baf8/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
index 7895ca1..825bb63 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
@@ -17,6 +17,15 @@
under the License.
====
+###FieldNode:::
+public class Test {
+ public attribute = 6, second = 9
+ String prop = "property"
+}
+:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
+[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
+[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
+
###wholeAnnotationExpressionSelection:::
import java.lang.annotation.*
@Target([ElementType.TYPE])
http://git-wip-us.apache.org/repos/asf/groovy/blob/6f78baf8/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
index dd70f0a..54e707d 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
@@ -17,15 +17,6 @@
under the License.
====
-###FieldNode:::
-public class Test {
- public attribute = 6, second = 9
- String prop = "property"
-}
-:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
-[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
-[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
-
###ifElse:::
if (expression) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/6f78baf8/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
index 8659937..6f26726 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
@@ -17,15 +17,6 @@
under the License.
====
-###FieldNode:::
-public class Test {
- public attribute = 6, second = 9
- String prop = "property"
-}
-:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
-[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
-[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
-
###ifElse:::
if (expression) {
[4/6] groovy git commit: split out LineColumn tests which differ
between the old and new parsers (adjustment for master branch)
Posted by pa...@apache.org.
split out LineColumn tests which differ between the old and new parsers (adjustment for master branch)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4925753d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4925753d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4925753d
Branch: refs/heads/GROOVY_2_6_X
Commit: 4925753d4e007d3faf9bb4adc832b267650d62f8
Parents: cf2ead1
Author: paulk <pa...@asert.com.au>
Authored: Fri May 12 20:43:04 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 21:59:11 2017 +1000
----------------------------------------------------------------------
src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/4925753d/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy b/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
index 43aef5a..bdf16a8 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheckTest.groovy
@@ -97,10 +97,12 @@ class LineColumnCheckTest extends ASTTest {
@Parameterized.Parameters(name = 'Test {0}: Source: {1} Expected: {2}')
static Iterable<Object[]> data() {
List testdata = extractData("${TEST_FILE_PREFIX}.txt")
- if (System.getProperty('groovy.antlr4') != 'false') {
- testdata += extractData("${TEST_FILE_PREFIX}_antlr4.txt")
- } else {
+ //flip if condition as per below and swap antlr2/4 ordering once antlr4 is the default
+ //if (System.getProperty('groovy.antlr4') != 'false') {
+ if (System.getProperty('groovy.antlr4') != 'true') {
testdata += extractData("${TEST_FILE_PREFIX}_antlr2.txt")
+ } else {
+ testdata += extractData("${TEST_FILE_PREFIX}_antlr4.txt")
}
testdata
}
[5/6] groovy git commit: Refine node position of fields
Posted by pa...@apache.org.
Refine node position of fields
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/d822809a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/d822809a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/d822809a
Branch: refs/heads/GROOVY_2_6_X
Commit: d822809a2ac61e0bc1b4cbb8c2ad659cf0755568
Parents: 4925753
Author: sunlan <su...@apache.org>
Authored: Sat May 13 13:16:08 2017 +0800
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 22:01:10 2017 +1000
----------------------------------------------------------------------
.../groovy/ast/LineColumnCheck_antlr4.txt | 4 +-
.../apache/groovy/parser/antlr4/AstBuilder.java | 81 ++++++++++++++++----
2 files changed, 66 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/d822809a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
index f959523..8659937 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
@@ -22,8 +22,8 @@ public class Test {
public attribute = 6, second = 9
String prop = "property"
}
-:::[FieldNode,(2:2),(2:34)][ConstantExpression,(2:21),(2:22)];
-[FieldNode,(2:2),(2:34)][ConstantExpression,(2:33),(2:34)];
+:::[FieldNode,(2:2),(2:22)][ConstantExpression,(2:21),(2:22)];
+[FieldNode,(2:24),(2:34)][ConstantExpression,(2:33),(2:34)];
[FieldNode,(3:2),(3:26)][ConstantExpression,(3:16),(3:26)]
###ifElse:::
http://git-wip-us.apache.org/repos/asf/groovy/blob/d822809a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index b193083..f50af1c 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -1554,12 +1554,13 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
}
private DeclarationListStatement createFieldDeclarationListStatement(VariableDeclarationContext ctx, ModifierManager modifierManager, ClassNode variableType, List<DeclarationExpression> declarationExpressionList, ClassNode classNode) {
- for (DeclarationExpression e : declarationExpressionList) {
- VariableExpression variableExpression = (VariableExpression) e.getLeftExpression();
+ for (int i = 0, n = declarationExpressionList.size(); i < n; i++) {
+ DeclarationExpression declarationExpression = declarationExpressionList.get(i);
+ VariableExpression variableExpression = (VariableExpression) declarationExpression.getLeftExpression();
int modifiers = modifierManager.getClassMemberModifiersOpValue();
- Expression initialValue = EmptyExpression.INSTANCE.equals(e.getRightExpression()) ? null : e.getRightExpression();
+ Expression initialValue = EmptyExpression.INSTANCE.equals(declarationExpression.getRightExpression()) ? null : declarationExpression.getRightExpression();
Object defaultValue = findDefaultValueByType(variableType);
if (classNode.isInterface()) {
@@ -1581,7 +1582,12 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
groovydocManager.handle(fieldNode, ctx);
- this.configureAST(fieldNode, ctx);
+ if (0 == i) {
+ this.configureAST(fieldNode, ctx, initialValue);
+ } else {
+ this.configureAST(fieldNode, variableExpression, initialValue);
+ }
+
} else {
PropertyNode propertyNode =
classNode.addProperty(
@@ -1600,10 +1606,14 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
groovydocManager.handle(fieldNode, ctx);
groovydocManager.handle(propertyNode, ctx);
- this.configureAST(fieldNode, ctx);
- this.configureAST(propertyNode, ctx);
+ if (0 == i) {
+ this.configureAST(fieldNode, ctx, initialValue);
+ this.configureAST(propertyNode, ctx, initialValue);
+ } else {
+ this.configureAST(fieldNode, variableExpression, initialValue);
+ this.configureAST(propertyNode, variableExpression, initialValue);
+ }
}
-
}
return null;
@@ -4087,7 +4097,18 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
Token start = ctx.getStart();
Token stop = ctx.getStop();
- String stopText = stop.getText();
+ astNode.setLineNumber(start.getLine());
+ astNode.setColumnNumber(start.getCharPositionInLine() + 1);
+
+ Pair<Integer, Integer> stopTokenEndPosition = endPosition(stop);
+ astNode.setLastLineNumber(stopTokenEndPosition.getKey());
+ astNode.setLastColumnNumber(stopTokenEndPosition.getValue());
+
+ return astNode;
+ }
+
+ private Pair<Integer, Integer> endPosition(Token token) {
+ String stopText = token.getText();
int stopTextLength = 0;
int newLineCnt = 0;
if (asBoolean((Object) stopText)) {
@@ -4095,18 +4116,11 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
newLineCnt = (int) StringUtils.countChar(stopText, '\n');
}
- astNode.setLineNumber(start.getLine());
- astNode.setColumnNumber(start.getCharPositionInLine() + 1);
-
if (0 == newLineCnt) {
- astNode.setLastLineNumber(stop.getLine());
- astNode.setLastColumnNumber(stop.getCharPositionInLine() + 1 + stop.getText().length());
+ return new Pair<Integer, Integer>(token.getLine(), token.getCharPositionInLine() + 1 + token.getText().length());
} else { // e.g. GStringEnd contains newlines, we should fix the location info
- astNode.setLastLineNumber(stop.getLine() + newLineCnt);
- astNode.setLastColumnNumber(stopTextLength - stopText.lastIndexOf('\n'));
+ return new Pair<Integer, Integer>(token.getLine() + newLineCnt, stopTextLength - stopText.lastIndexOf('\n'));
}
-
- return astNode;
}
private <T extends ASTNode> T configureAST(T astNode, TerminalNode terminalNode) {
@@ -4131,6 +4145,39 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
return astNode;
}
+ private <T extends ASTNode> T configureAST(T astNode, GroovyParserRuleContext ctx, ASTNode stop) {
+ Token start = ctx.getStart();
+
+ astNode.setLineNumber(start.getLine());
+ astNode.setColumnNumber(start.getCharPositionInLine() + 1);
+
+ if (asBoolean(stop)) {
+ astNode.setLastLineNumber(stop.getLastLineNumber());
+ astNode.setLastColumnNumber(stop.getLastColumnNumber());
+ } else {
+ Pair<Integer, Integer> endPosition = endPosition(start);
+ astNode.setLastLineNumber(endPosition.getKey());
+ astNode.setLastColumnNumber(endPosition.getValue());
+ }
+
+ return astNode;
+ }
+
+ private <T extends ASTNode> T configureAST(T astNode, ASTNode start, ASTNode stop) {
+ astNode.setLineNumber(start.getLineNumber());
+ astNode.setColumnNumber(start.getColumnNumber());
+
+ if (asBoolean(stop)) {
+ astNode.setLastLineNumber(stop.getLastLineNumber());
+ astNode.setLastColumnNumber(stop.getLastColumnNumber());
+ } else {
+ astNode.setLastLineNumber(start.getLastLineNumber());
+ astNode.setLastColumnNumber(start.getLastColumnNumber());
+ }
+
+ return astNode;
+ }
+
private boolean isTrue(GroovyParserRuleContext ctx, String key) {
Object nmd = ctx.getNodeMetaData(key);
[2/6] groovy git commit: split out LineColumn tests which differ
between the old and new parsers (part 2)
Posted by pa...@apache.org.
split out LineColumn tests which differ between the old and new parsers (part 2)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2deb1e9b
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2deb1e9b
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2deb1e9b
Branch: refs/heads/GROOVY_2_6_X
Commit: 2deb1e9b01a5e5b342d6ea310ccdac201ada26c0
Parents: 0d18108
Author: paulk <pa...@asert.com.au>
Authored: Fri May 12 16:55:15 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat May 13 21:58:00 2017 +1000
----------------------------------------------------------------------
.../org/codehaus/groovy/ast/LineColumnCheck.txt | 92 ++------------------
.../groovy/ast/LineColumnCheck_antlr2.txt | 80 +++++++++++++++++
.../groovy/ast/LineColumnCheck_antlr4.txt | 88 ++++++++++++++++++-
.../apache/groovy/parser/antlr4/GroovyParser.g4 | 2 +-
.../apache/groovy/parser/antlr4/AstBuilder.java | 3 +-
5 files changed, 175 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/2deb1e9b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
index a6f9af4..616d9e8 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
@@ -61,26 +61,6 @@ for (a in (1..42)) {
}
:::[ForStatement,(1:1),(4:2)];[BlockStatement,(1:20),(4:2)]
-###switchCase:::
-switch (expression) {
- case 1 : log = 1
- case 2 : log = 2
-}
-:::[SwitchStatement,(1:1),(4:2)];
-[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:2)];
-[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:1)]
-
-###switchCaseDefault:::
-switch (expression) {
- case 1 : log = 1 ; break
- case 2 : log = 2 ; break
- default : log = 6
-}
-:::[SwitchStatement,(1:1),(5:2)];
-[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:2)];[BreakStatement,(2:21),(2:26)];
-[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:2)];[BreakStatement,(3:21),(3:26)];
-[BlockStatement,(4:12),(5:1)]
-
###synchronizedStatement:::
synchronized (obj) {
@@ -89,27 +69,21 @@ synchronized (obj) {
:::[SynchronizedStatement,(1:1),(4:2)];[BlockStatement,(1:20),(4:2)]
###breakStatement:::
-break label
-:::[BreakStatement,(1:1),(1:12)]
+while (true) {
+ break label
+}
+:::[BreakStatement,(2:3),(2:14)]
###continueStatement:::
-continue label
-:::[ContinueStatement,(1:1),(1:15)]
+while (true) {
+ continue label
+}
+:::[ContinueStatement,(2:3),(2:17)]
###assertStatement():::
assert (expression)
:::[AssertStatement,(1:1),(1:20)]
-###assertStatementAdv:::
-assert (expression) , "AssertTest"
-:::[AssertStatement,(1:1),(1:35)][BooleanExpression,(1:8),(1:21)];
-[VariableExpression,(1:8),(1:21)][ConstantExpression,(1:23),(1:35)]
-
-###throwStatement:::
-throw new Exception("exception")
-:::[ThrowStatement,(1:1),(1:33)][ConstructorCallExpression,(1:7),(1:33)];
-[ArgumentListExpression,(1:21),(1:32)][ConstantExpression,(1:21),(1:32)]
-
###nonBracedStatementIf:::
if (expression)
while (expression2)
@@ -167,28 +141,11 @@ class Test {
}
}:::[StaticMethodCallExpression,(3:3),(3:12)]
-###methodCallExpressionInAssignment:::
-sub = "groovy".substring(3)
-:::[MethodCallExpression,(1:7),(1:28)][ConstantExpression,(1:7),(1:15)];
-[ConstantExpression,(1:16),(1:25)][ArgumentListExpression,(1:26),(1:27)];
-[ConstantExpression,(1:26),(1:27)]
-
-###constructorCallExpressionInAssignment:::
-txt = new String("groovy")
-:::[ConstructorCallExpression,(1:7),(1:27)][ClassNode,(1:11),(1:17)][ArgumentListExpression,(1:18),(1:26)];
-[ConstantExpression,(1:18),(1:26)]
-
###methodCallExpressionAppendedBlockInAssignment:::
var = f{closure}
:::[MethodCallExpression,(1:7),(1:17)];
[ConstantExpression,(1:7),(1:8)][ArgumentListExpression,(1:8),(1:17)][ClosureExpression,(1:8),(1:17)]
-###methodCallExpressionArgsAndAppendedBlock:::
-a = f(x){y}
-:::[MethodCallExpression,(1:5),(1:12)];
-[ConstantExpression,(1:5),(1:6)][ArgumentListExpression,(1:7),(1:8)][VariableExpression,(1:7),(1:8)];
-[ClosureExpression,(1:9),(1:12)]
-
###ArrayExpressionD1:::
def array = new int[1]
:::[ArrayExpression,(1:13),(1:23)][ClassNode,(1:17),(1:20)][ConstantExpression,(1:21),(1:22)]
@@ -198,23 +155,6 @@ def array = new int[1][2]
:::[ArrayExpression,(1:13),(1:26)][ClassNode,(1:17),(1:20)];
[ConstantExpression,(1:21),(1:22)][ConstantExpression,(1:24),(1:25)]
-###methodCallExpressionChain:::
-b = getClass().getName().substring(42)
-:::[MethodCallExpression,(1:5),(1:39)][MethodCallExpression,(1:5),(1:25)];
-[MethodCallExpression,(1:5),(1:15)];
-[ConstantExpression,(1:5),(1:13)][ArgumentListExpression,(1:14),(1:14)];
-[ConstantExpression,(1:16),(1:23)][ArgumentListExpression,(1:24),(1:24)];
-[ConstantExpression,(1:26),(1:35)][ArgumentListExpression,(1:36),(1:38)];
-[ConstantExpression,(1:36),(1:38)]
-
-###methodCallExpressionNested:::
-b = outerMethod(obj.innerMethod(abc))
-:::[MethodCallExpression,(1:5),(1:38)];
-[ConstantExpression,(1:5),(1:16)][ArgumentListExpression,(1:17),(1:37)];
-[MethodCallExpression,(1:17),(1:37)][VariableExpression,(1:17),(1:20)];
-[ConstantExpression,(1:21),(1:32)][ArgumentListExpression,(1:33),(1:36)];
-[VariableExpression,(1:33),(1:36)]
-
###indexPropertyArgsWithObj:::
a = obj.prop[]
:::[BinaryExpression,(1:5),(1:15)]
@@ -223,14 +163,6 @@ a = obj.prop[]
a = obj['prop']
:::[BinaryExpression,(1:5),(1:16)]
-###declaratorBracketD1:::
-int[] array
-:::[ExpressionStatement,(1:1),(1:12)][ClassNode,(1:1),(1:7)][DeclarationExpression,(1:1),(1:12)]
-
-###declaratorBracketD3:::
-int[][][] array
-:::[ExpressionStatement,(1:1),(1:16)][ClassNode,(1:1),(1:11)][DeclarationExpression,(1:1),(1:16)]
-
###resolvedDeclarationExpression:::
def i = Integer.parseInt("42")
:::[DeclarationExpression,(1:1),(1:31)]
@@ -239,14 +171,6 @@ def i = Integer.parseInt("42")
def method() throws Exception {}
:::[ClassNode,(1:21),(1:30)]
-###throwsClauseQualifiedName:::
-def method() throws java.lang.Exception {}
-:::[ClassNode,(1:21),(1:41)]
-
-###throwsClauseMultiQualifiedName:::
-def method() throws java.lang.Exception, java.lang.RuntimeException {}
-:::[ClassNode,(1:21),(1:40)][ClassNode,(1:42),(1:69)]
-
###extendsClassNode:::
class BaseClass {}
class ExtendedBaseClass extends BaseClass {}
http://git-wip-us.apache.org/repos/asf/groovy/blob/2deb1e9b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
index 95866a0..5da0000 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr2.txt
@@ -94,3 +94,83 @@ try {
[CatchStatement,(3:3),(5:3)][BlockStatement,(3:12),(5:3)];
[CatchStatement,(5:3),(7:3)][BlockStatement,(5:12),(7:3)];
[BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
+
+###switchCase:::
+switch (expression) {
+ case 1 : log = 1
+ case 2 : log = 2
+}
+:::[SwitchStatement,(1:1),(4:2)];
+[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:2)];
+[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:1)]
+
+###switchCaseDefault:::
+switch (expression) {
+ case 1 : log = 1 ; break
+ case 2 : log = 2 ; break
+ default : log = 6
+}
+:::[SwitchStatement,(1:1),(5:2)];
+[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:2)];[BreakStatement,(2:21),(2:26)];
+[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:2)];[BreakStatement,(3:21),(3:26)];
+[BlockStatement,(4:12),(5:1)]
+
+###assertStatementAdv:::
+assert (expression) , "AssertTest"
+:::[AssertStatement,(1:1),(1:35)][BooleanExpression,(1:8),(1:21)];
+[VariableExpression,(1:8),(1:21)][ConstantExpression,(1:23),(1:35)]
+
+###throwStatement:::
+throw new Exception("exception")
+:::[ThrowStatement,(1:1),(1:33)][ConstructorCallExpression,(1:7),(1:33)];
+[ArgumentListExpression,(1:21),(1:32)][ConstantExpression,(1:21),(1:32)]
+
+###methodCallExpressionInAssignment:::
+sub = "groovy".substring(3)
+:::[MethodCallExpression,(1:7),(1:28)][ConstantExpression,(1:7),(1:15)];
+[ConstantExpression,(1:16),(1:25)][ArgumentListExpression,(1:26),(1:27)];
+[ConstantExpression,(1:26),(1:27)]
+
+###constructorCallExpressionInAssignment:::
+txt = new String("groovy")
+:::[ConstructorCallExpression,(1:7),(1:27)][ClassNode,(1:11),(1:17)][ArgumentListExpression,(1:18),(1:26)];
+[ConstantExpression,(1:18),(1:26)]
+
+###methodCallExpressionArgsAndAppendedBlock:::
+a = f(x){y}
+:::[MethodCallExpression,(1:5),(1:12)];
+[ConstantExpression,(1:5),(1:6)][ArgumentListExpression,(1:7),(1:8)][VariableExpression,(1:7),(1:8)];
+[ClosureExpression,(1:9),(1:12)]
+
+###methodCallExpressionChain:::
+b = getClass().getName().substring(42)
+:::[MethodCallExpression,(1:5),(1:39)][MethodCallExpression,(1:5),(1:25)];
+[MethodCallExpression,(1:5),(1:15)];
+[ConstantExpression,(1:5),(1:13)][ArgumentListExpression,(1:14),(1:14)];
+[ConstantExpression,(1:16),(1:23)][ArgumentListExpression,(1:24),(1:24)];
+[ConstantExpression,(1:26),(1:35)][ArgumentListExpression,(1:36),(1:38)];
+[ConstantExpression,(1:36),(1:38)]
+
+###methodCallExpressionNested:::
+b = outerMethod(obj.innerMethod(abc))
+:::[MethodCallExpression,(1:5),(1:38)];
+[ConstantExpression,(1:5),(1:16)][ArgumentListExpression,(1:17),(1:37)];
+[MethodCallExpression,(1:17),(1:37)][VariableExpression,(1:17),(1:20)];
+[ConstantExpression,(1:21),(1:32)][ArgumentListExpression,(1:33),(1:36)];
+[VariableExpression,(1:33),(1:36)]
+
+###declaratorBracketD1:::
+int[] array
+:::[ExpressionStatement,(1:1),(1:12)][ClassNode,(1:1),(1:7)][DeclarationExpression,(1:1),(1:12)]
+
+###declaratorBracketD3:::
+int[][][] array
+:::[ExpressionStatement,(1:1),(1:16)][ClassNode,(1:1),(1:11)][DeclarationExpression,(1:1),(1:16)]
+
+###throwsClauseQualifiedName:::
+def method() throws java.lang.Exception {}
+:::[ClassNode,(1:21),(1:41)]
+
+###throwsClauseMultiQualifiedName:::
+def method() throws java.lang.Exception, java.lang.RuntimeException {}
+:::[ClassNode,(1:21),(1:40)][ClassNode,(1:42),(1:69)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/2deb1e9b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
index da8d573..2b43cc3 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck_antlr4.txt
@@ -56,7 +56,7 @@ try {
}
:::[TryCatchStatement,(1:1),(6:2)][BlockStatement,(1:5),(3:2)];
-[CatchStatement,(3:12),(6:2)][BlockStatement,(3:12),(6:2)]
+[CatchStatement,(3:3),(6:2)][BlockStatement,(3:12),(6:2)]
###tryFinally:::
try {
@@ -77,7 +77,7 @@ try {
}
:::[TryCatchStatement,(1:1),(7:2)][BlockStatement,(1:5),(3:2)];
-[CatchStatement,(3:12),(5:2)][BlockStatement,(3:12),(5:2)];
+[CatchStatement,(3:3),(5:2)][BlockStatement,(3:12),(5:2)];
[BlockStatement,(5:3),(7:2)][BlockStatement,(5:11),(7:2)]
###tryMultiCatchFinally:::
@@ -91,6 +91,86 @@ try {
}
:::[TryCatchStatement,(1:1),(9:2)][BlockStatement,(1:5),(3:2)];
-[CatchStatement,(3:12),(5:2)][BlockStatement,(3:12),(5:2)];
-[CatchStatement,(5:12),(7:2)][BlockStatement,(5:12),(7:2)];
+[CatchStatement,(3:3),(5:2)][BlockStatement,(3:12),(5:2)];
+[CatchStatement,(5:3),(7:2)][BlockStatement,(5:12),(7:2)];
[BlockStatement,(7:3),(9:2)][BlockStatement,(7:11),(9:2)]
+
+###switchCase:::
+switch (expression) {
+ case 1 : log = 1
+ case 2 : log = 2
+}
+:::[SwitchStatement,(1:1),(4:2)];
+[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:1)];
+[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:1)]
+
+###switchCaseDefault:::
+switch (expression) {
+ case 1 : log = 1 ; break
+ case 2 : log = 2 ; break
+ default : log = 6
+}
+:::[SwitchStatement,(1:1),(5:2)];
+[CaseStatement,(2:2),(2:6)];[BlockStatement,(2:11),(3:1)];[BreakStatement,(2:21),(2:26)];
+[CaseStatement,(3:2),(3:6)];[BlockStatement,(3:11),(4:1)];[BreakStatement,(3:21),(3:26)];
+[BlockStatement,(4:12),(5:1)]
+
+###assertStatementAdv:::
+assert (expression) , "AssertTest"
+:::[AssertStatement,(1:1),(1:35)][BooleanExpression,(1:8),(1:20)];
+[VariableExpression,(1:8),(1:20)][ConstantExpression,(1:23),(1:35)]
+
+###throwStatement:::
+throw new Exception("exception")
+:::[ThrowStatement,(1:1),(1:33)][ConstructorCallExpression,(1:7),(1:33)];
+[ArgumentListExpression,(1:20),(1:33)][ConstantExpression,(1:21),(1:32)]
+
+###methodCallExpressionInAssignment:::
+sub = "groovy".substring(3)
+:::[MethodCallExpression,(1:7),(1:28)][ConstantExpression,(1:7),(1:15)];
+[ConstantExpression,(1:16),(1:25)][ArgumentListExpression,(1:25),(1:28)];
+[ConstantExpression,(1:26),(1:27)]
+
+###constructorCallExpressionInAssignment:::
+txt = new String("groovy")
+:::[ConstructorCallExpression,(1:7),(1:27)][ClassNode,(1:11),(1:17)][ArgumentListExpression,(1:17),(1:27)];
+[ConstantExpression,(1:18),(1:26)]
+
+###methodCallExpressionArgsAndAppendedBlock:::
+a = f(x){y}
+:::[MethodCallExpression,(1:5),(1:12)];
+[ConstantExpression,(1:5),(1:6)][ArgumentListExpression,(1:6),(1:9)][VariableExpression,(1:7),(1:8)];
+[ClosureExpression,(1:9),(1:12)]
+
+###methodCallExpressionChain:::
+b = getClass().getName().substring(42)
+:::[MethodCallExpression,(1:5),(1:39)][MethodCallExpression,(1:23),(1:25)];
+[MethodCallExpression,(1:13),(1:15)];
+[ConstantExpression,(1:5),(1:13)][ArgumentListExpression,(1:13),(1:15)];
+[ConstantExpression,(1:16),(1:23)][ArgumentListExpression,(1:23),(1:25)];
+[ConstantExpression,(1:26),(1:35)][ArgumentListExpression,(1:35),(1:39)];
+[ConstantExpression,(1:36),(1:38)]
+
+###methodCallExpressionNested:::
+b = outerMethod(obj.innerMethod(abc))
+:::[MethodCallExpression,(1:5),(1:38)];
+[ConstantExpression,(1:5),(1:16)][ArgumentListExpression,(1:16),(1:38)];
+[MethodCallExpression,(1:17),(1:37)][VariableExpression,(1:17),(1:20)];
+[ConstantExpression,(1:21),(1:32)][ArgumentListExpression,(1:32),(1:37)];
+[VariableExpression,(1:33),(1:36)]
+
+###declaratorBracketD1:::
+int[] array
+:::[ExpressionStatement,(1:1),(1:12)][ClassNode,(1:1),(1:6)][DeclarationExpression,(1:1),(1:12)]
+
+###declaratorBracketD3:::
+int[][][] array
+:::[ExpressionStatement,(1:1),(1:16)][ClassNode,(1:1),(1:10)][DeclarationExpression,(1:1),(1:16)]
+
+###throwsClauseQualifiedName:::
+def method() throws java.lang.Exception {}
+:::[ClassNode,(1:21),(1:40)]
+
+###throwsClauseMultiQualifiedName:::
+def method() throws java.lang.Exception, java.lang.RuntimeException {}
+:::[ClassNode,(1:21),(1:40)][ClassNode,(1:42),(1:68)]
http://git-wip-us.apache.org/repos/asf/groovy/blob/2deb1e9b/subprojects/parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 b/subprojects/parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4
index 0eaa3a1..3949350 100644
--- a/subprojects/parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4
+++ b/subprojects/parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4
@@ -679,7 +679,7 @@ locals[boolean resourcesExists = false]
|
nls finallyBlock
|
- // try-with-resources can have no catche and finally clauses
+ // a catch or finally clause is required unless it's try-with-resources
{ $resourcesExists }?<fail={"catch or finally clauses are required for try-catch statement"}>
)
;
http://git-wip-us.apache.org/repos/asf/groovy/blob/2deb1e9b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 589eb0a..f0c490a 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -607,7 +607,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
new Parameter(e, this.visitIdentifier(ctx.identifier())),
this.visitBlock(ctx.block())),
- ctx.block());
+ ctx);
list.add(catchStatement);
}
return list;
@@ -1961,6 +1961,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
if (asBoolean(ctx.arguments())) {
Expression argumentsExpr = this.visitArguments(ctx.arguments());
+ this.configureAST(argumentsExpr, ctx);
if (isTrue(baseExpr, IS_INSIDE_PARENTHESES)) { // e.g. (obj.x)(), (obj.@x)()
MethodCallExpression methodCallExpression =