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
