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 2019/09/26 11:05:43 UTC
[groovy] branch GROOVY_3_0_X updated: adapt to relevant parser
This is an automated email from the ASF dual-hosted git repository.
paulk 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 12c192c adapt to relevant parser
12c192c is described below
commit 12c192c7803dccb9fad1317b0d8b1f6ce9d0474f
Author: Paul King <pa...@asert.com.au>
AuthorDate: Thu Sep 26 21:05:30 2019 +1000
adapt to relevant parser
---
src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java | 9 +++++++--
.../text/markup/MarkupTemplateTypeCheckingExtension.groovy | 8 +++++++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index f3c6f92..4831a5d 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -22,6 +22,7 @@ import groovy.lang.GroovyRuntimeException;
import groovy.lang.Tuple2;
import groovy.transform.stc.IncorrectTypeHintException;
import org.codehaus.groovy.GroovyBugError;
+import org.codehaus.groovy.antlr.AntlrParserPluginFactory;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
@@ -30,8 +31,8 @@ import org.codehaus.groovy.ast.MethodNode;
import org.codehaus.groovy.ast.ModuleNode;
import org.codehaus.groovy.ast.Parameter;
import org.codehaus.groovy.ast.stmt.EmptyStatement;
-import org.codehaus.groovy.control.CompilationFailedException;
import org.codehaus.groovy.control.CompilationUnit;
+import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.ResolveVisitor;
import org.codehaus.groovy.control.SourceUnit;
import org.codehaus.groovy.runtime.memoize.ConcurrentSoftCache;
@@ -582,7 +583,11 @@ public class GenericsUtils {
final ASTNode usage) {
try {
- ClassNode parsedNode = Antlr4Utils.parse("DummyNode<" + option + ">", compilationUnit.getConfiguration());
+ // for parsing just class names old and new parser should be the same but let's stick to the correct parser any way
+ boolean oldParserEnabled = CompilerConfiguration.DEFAULT.getPluginFactory() instanceof AntlrParserPluginFactory;
+ ClassNode parsedNode = oldParserEnabled ?
+ Antlr2Utils.parse("DummyNode<" + option + ">") :
+ Antlr4Utils.parse("DummyNode<" + option + ">", compilationUnit.getConfiguration());
// the returned node is DummyNode<Param1, Param2, Param3, ...)
GenericsType[] parsedNodeGenericsTypes = parsedNode.getGenericsTypes();
diff --git a/subprojects/groovy-templates/src/main/groovy/groovy/text/markup/MarkupTemplateTypeCheckingExtension.groovy b/subprojects/groovy-templates/src/main/groovy/groovy/text/markup/MarkupTemplateTypeCheckingExtension.groovy
index 865068b..ea302da 100644
--- a/subprojects/groovy-templates/src/main/groovy/groovy/text/markup/MarkupTemplateTypeCheckingExtension.groovy
+++ b/subprojects/groovy-templates/src/main/groovy/groovy/text/markup/MarkupTemplateTypeCheckingExtension.groovy
@@ -19,6 +19,7 @@
package groovy.text.markup
import groovy.transform.CompileStatic
+import org.codehaus.groovy.antlr.AntlrParserPluginFactory
import org.codehaus.groovy.ast.ASTNode
import org.codehaus.groovy.ast.ClassCodeExpressionTransformer
import org.codehaus.groovy.ast.ClassHelper
@@ -36,6 +37,7 @@ import org.codehaus.groovy.ast.expr.MethodCallExpression
import org.codehaus.groovy.ast.expr.TupleExpression
import org.codehaus.groovy.ast.expr.VariableExpression
import org.codehaus.groovy.ast.stmt.EmptyStatement
+import org.codehaus.groovy.ast.tools.Antlr2Utils
import org.codehaus.groovy.ast.tools.Antlr4Utils
import org.codehaus.groovy.control.CompilerConfiguration
import org.codehaus.groovy.control.ResolveVisitor
@@ -173,7 +175,11 @@ class MarkupTemplateTypeCheckingExtension extends GroovyTypeCheckingExtensionSup
@CompileStatic
private static ClassNode buildNodeFromString(String option, TypeCheckingContext ctx) {
- ClassNode parsedNode = Antlr4Utils.parse(option, CompilerConfiguration.DEFAULT)
+ // for parsing just class names old and new parser should be the same but let's stick to the correct parser any way
+ boolean oldParserEnabled = CompilerConfiguration.DEFAULT.pluginFactory instanceof AntlrParserPluginFactory
+ ClassNode parsedNode = oldParserEnabled ?
+ Antlr2Utils.parse(option) :
+ Antlr4Utils.parse(option, CompilerConfiguration.DEFAULT)
ClassNode dummyClass = new ClassNode("dummy", 0, OBJECT_TYPE)
dummyClass.setModule(new ModuleNode(ctx.source))
MethodNode dummyMN = new MethodNode(