This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new a320281 Fix choosing wrong parser plugin factory and catch up changes
of antlr2 parser
a320281 is described below
commit a320281f7f4fd6683dc26555401fa53739847887
Author: Daniel Sun <[email protected]>
AuthorDate: Mon Jan 20 02:21:27 2020 +0800
Fix choosing wrong parser plugin factory and catch up changes of antlr2
parser
(cherry picked from commit cbb338854ee1e39a819575ad8ed0f87925a17d73)
---
.../main/java/org/apache/groovy/parser/Antlr2Parser.java | 14 +++++++++++++-
.../main/java/org/apache/groovy/parser/Antlr4Parser.java | 5 ++---
.../java/org/apache/groovy/parser/antlr4/AstBuilder.java | 7 +------
.../apache/groovy/parser/antlr4/GroovyParserTest.groovy | 4 ++--
.../src/test/resources/bugs/BUG-GROOVY-8913.groovy | 2 +-
.../src/test/resources/core/EnumDeclaration_02.groovy | 2 ++
6 files changed, 21 insertions(+), 13 deletions(-)
diff --git
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr2Parser.java
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr2Parser.java
index d1a1436..2808509 100644
---
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr2Parser.java
+++
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr2Parser.java
@@ -18,14 +18,26 @@
*/
package org.apache.groovy.parser;
+import org.codehaus.groovy.antlr.AntlrParserPluginFactory;
import org.codehaus.groovy.control.CompilerConfiguration;
/**
* The Antlr2 parser for creating a module node.
*/
public class Antlr2Parser extends AbstractParser {
+ private final CompilerConfiguration compilerConfiguration;
+
+ public Antlr2Parser() {
+ this(new CompilerConfiguration(CompilerConfiguration.DEFAULT));
+ }
+
+ public Antlr2Parser(CompilerConfiguration compilerConfiguration) {
+ this.compilerConfiguration = compilerConfiguration;
+ compilerConfiguration.setPluginFactory(new AntlrParserPluginFactory());
+ }
+
@Override
protected CompilerConfiguration getCompilerConfiguration() {
- return CompilerConfiguration.DEFAULT;
+ return compilerConfiguration;
}
}
diff --git
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr4Parser.java
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr4Parser.java
index 96df593..7cb14fb 100644
---
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr4Parser.java
+++
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr4Parser.java
@@ -28,17 +28,16 @@ public class Antlr4Parser extends AbstractParser {
private final CompilerConfiguration compilerConfiguration;
public Antlr4Parser() {
- this.compilerConfiguration = new
CompilerConfiguration(CompilerConfiguration.DEFAULT);
+ this(new CompilerConfiguration(CompilerConfiguration.DEFAULT));
}
public Antlr4Parser(CompilerConfiguration compilerConfiguration) {
this.compilerConfiguration = compilerConfiguration;
+ compilerConfiguration.setPluginFactory(new
Antlr4PluginFactory(compilerConfiguration));
}
@Override
protected CompilerConfiguration getCompilerConfiguration() {
- compilerConfiguration.setPluginFactory(new
Antlr4PluginFactory(compilerConfiguration));
-
return compilerConfiguration;
}
}
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 0eb22ed..e12712c 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
@@ -19,7 +19,6 @@
package org.apache.groovy.parser.antlr4;
import groovy.lang.Tuple2;
-import groovy.transform.Trait;
import org.antlr.v4.runtime.ANTLRErrorListener;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
@@ -1190,7 +1189,7 @@ public class AstBuilder extends
GroovyParserBaseVisitor<Object> implements Groov
}
private void attachTraitAnnotation(ClassNode classNode) {
- classNode.addAnnotation(new
AnnotationNode(ClassHelper.make(Trait.class)));
+ classNode.addAnnotation(new
AnnotationNode(ClassHelper.make("groovy.transform.Trait")));
}
@SuppressWarnings("unchecked")
@@ -3787,10 +3786,6 @@ public class AstBuilder extends
GroovyParserBaseVisitor<Object> implements Groov
List<List<AnnotationNode>> dimList = this.visitDimsOpt(ctx.dimsOpt());
if (asBoolean(dimList)) {
- // clear array's generics type info. Groovy's bug? array's
generics type will be ignored. e.g. List<String>[]... p
- classNode.setGenericsTypes(null);
- classNode.setUsingGenerics(false);
-
classNode = this.createArrayType(classNode, dimList);
}
diff --git
a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
index 2ab6e00..353833e 100644
---
a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
+++
b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
@@ -339,12 +339,12 @@ class GroovyParserTest extends GroovyTestCase {
void "test groovy core - InterfaceDeclaration"() {
doTest('core/InterfaceDeclaration_01.groovy')
- doTest('core/InterfaceDeclaration_02.groovy')
+ doTest('core/InterfaceDeclaration_02.groovy', [PropertyNode,
FieldNode])
doTest('core/InterfaceDeclaration_03.groovy')
}
void "test groovy core - EnumDeclaration"() {
- doTest('core/EnumDeclaration_01.groovy')
+ doTest('core/EnumDeclaration_01.groovy', [PropertyNode, FieldNode])
doTest('core/EnumDeclaration_02.groovy', [ExpressionStatement])
doTest('core/EnumDeclaration_03.groovy')
doTest('core/EnumDeclaration_04.groovy')
diff --git
a/subprojects/parser-antlr4/src/test/resources/bugs/BUG-GROOVY-8913.groovy
b/subprojects/parser-antlr4/src/test/resources/bugs/BUG-GROOVY-8913.groovy
index 19b5b79..5213e25 100644
--- a/subprojects/parser-antlr4/src/test/resources/bugs/BUG-GROOVY-8913.groovy
+++ b/subprojects/parser-antlr4/src/test/resources/bugs/BUG-GROOVY-8913.groovy
@@ -17,7 +17,7 @@
* under the License.
*/
-def x = (a.b) + c()
+//def x = (a.b) + c()
def x = 1
def y = 2
diff --git
a/subprojects/parser-antlr4/src/test/resources/core/EnumDeclaration_02.groovy
b/subprojects/parser-antlr4/src/test/resources/core/EnumDeclaration_02.groovy
index b4d8d13..aef6b4a 100644
---
a/subprojects/parser-antlr4/src/test/resources/core/EnumDeclaration_02.groovy
+++
b/subprojects/parser-antlr4/src/test/resources/core/EnumDeclaration_02.groovy
@@ -74,11 +74,13 @@ enum J {
B,
}
+/* // antlr2 parser does not support the following code since some beta/rc
release of 3.0.0
enum K {
A,
B,
;
}
+*/
enum Outer {
A, B