This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch nextflow-perf-issue
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 6c7b56a93b986b781940da3a72a637252e4bd9de
Author: Daniel Sun <[email protected]>
AuthorDate: Mon Jan 20 09:13:38 2020 +0800

    Fix choosing wrong parser plugin factory and catch up changes of antlr2 
parser
---
 .../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

Reply via email to