Repository: groovy Updated Branches: refs/heads/master 59efbe72a -> 13507791f
GROOVY-8915: [Parrot] Make groovydoc configuration flexible(closes #836) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/13507791 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/13507791 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/13507791 Branch: refs/heads/master Commit: 13507791fd521ee54674908fda59450bcf966335 Parents: 59efbe7 Author: Daniel Sun <sun...@apache.org> Authored: Sun Dec 9 11:25:35 2018 +0800 Committer: Daniel Sun <sun...@apache.org> Committed: Sun Dec 9 11:25:35 2018 +0800 ---------------------------------------------------------------------- .../groovy/control/CompilerConfiguration.java | 60 +++++++++++++++++--- .../groovy/control/ParserPluginFactory.java | 29 +--------- subprojects/parser-antlr4/build.gradle | 2 +- .../org/apache/groovy/parser/Antlr4Parser.java | 14 ++++- .../parser/antlr4/Antlr4ParserPlugin.java | 8 ++- .../parser/antlr4/Antlr4PluginFactory.java | 9 ++- .../apache/groovy/parser/antlr4/AstBuilder.java | 7 ++- .../groovy/parser/antlr4/GroovydocManager.java | 48 ++++++---------- .../parser/antlr4/GroovyParserTest.groovy | 11 +++- .../groovy/parser/antlr4/TestUtils.groovy | 23 ++++---- 10 files changed, 124 insertions(+), 87 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java index 2cea431..ff2ee9e 100644 --- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java +++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java @@ -49,6 +49,12 @@ public class CompilerConfiguration { /** This (<code>"indy"</code>) is the Optimization Option value for enabling <code>invokedynamic</code> compilation. */ public static final String INVOKEDYNAMIC = "indy"; + /** This (<code>"groovdoc"</code>) is the Optimization Option value for enabling attaching groovydoc as AST node metadata. */ + public static final String GROOVYDOC = "groovdoc"; + + /** This (<code>"runtimeGroovdoc"</code>) is the Optimization Option value for enabling attaching {@link groovy.lang.Groovydoc} annotation*/ + public static final String RUNTIME_GROOVYDOC = "runtimeGroovdoc"; + /** This (<code>"1.4"</code>) is the value for targetBytecode to compile for a JDK 1.4. **/ public static final String JDK4 = "1.4"; /** This (<code>"1.5"</code>) is the value for targetBytecode to compile for a JDK 1.5. **/ @@ -265,14 +271,12 @@ public class CompilerConfiguration { setTargetDirectory(target); } - boolean indy = getBooleanSafe("groovy.target.indy"); - if (DEFAULT!=null && Boolean.TRUE.equals(DEFAULT.getOptimizationOptions().get(INVOKEDYNAMIC))) { - indy = true; - } - Map options = new HashMap<String,Boolean>(3); - if (indy) { - options.put(INVOKEDYNAMIC, Boolean.TRUE); - } + Map<String, Boolean> options = new HashMap<>(4); + + handleOptimizationOption(options, INVOKEDYNAMIC, "groovy.target.indy"); + handleOptimizationOption(options, GROOVYDOC, "groovy.attach.groovydoc"); + handleOptimizationOption(options, RUNTIME_GROOVYDOC, "groovy.attach.runtime.groovydoc"); + setOptimizationOptions(options); try { @@ -287,6 +291,16 @@ public class CompilerConfiguration { } } + private void handleOptimizationOption(Map<String, Boolean> options, String optionName, String sysOptionName) { + boolean optionEnabled = getBooleanSafe(sysOptionName); + if (DEFAULT != null && Boolean.TRUE.equals(DEFAULT.getOptimizationOptions().get(optionName))) { + optionEnabled = true; + } + if (optionEnabled) { + options.put(optionName, Boolean.TRUE); + } + } + /** * Copy constructor. Use this if you have a mostly correct configuration * for your compilation but you want to make a some changes programatically. @@ -737,7 +751,7 @@ public class CompilerConfiguration { if (pluginFactory == null) { pluginFactory = ParserVersion.V_2 == parserVersion ? ParserPluginFactory.antlr2() - : ParserPluginFactory.antlr4(); + : ParserPluginFactory.antlr4(this); } return pluginFactory; } @@ -930,6 +944,34 @@ public class CompilerConfiguration { return indyEnabled; } + /** + * Check whether groovydoc enabled + * @return the result + */ + public boolean isGroovydocEnabled() { + Boolean groovydocEnabled = this.getOptimizationOptions().get(GROOVYDOC); + + if (null == groovydocEnabled) { + return false; + } + + return groovydocEnabled; + } + + /** + * Check whether runtime groovydoc enabled + * @return the result + */ + public boolean isRuntimeGroovydocEnabled() { + Boolean runtimeGroovydocEnabled = this.getOptimizationOptions().get(RUNTIME_GROOVYDOC); + + if (null == runtimeGroovydocEnabled) { + return false; + } + + return runtimeGroovydocEnabled; + } + // See http://groovy.329449.n5.nabble.com/What-the-static-compile-by-default-tt5750118.html // https://issues.apache.org/jira/browse/GROOVY-8543 // http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/src/main/java/org/codehaus/groovy/control/ParserPluginFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/control/ParserPluginFactory.java b/src/main/java/org/codehaus/groovy/control/ParserPluginFactory.java index 1d7a994..0b6f143 100644 --- a/src/main/java/org/codehaus/groovy/control/ParserPluginFactory.java +++ b/src/main/java/org/codehaus/groovy/control/ParserPluginFactory.java @@ -18,43 +18,20 @@ */ package org.codehaus.groovy.control; -import groovy.lang.GroovyRuntimeException; +import org.apache.groovy.parser.antlr4.Antlr4PluginFactory; import org.codehaus.groovy.antlr.AntlrParserPluginFactory; -import java.security.AccessController; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; - /** * A factory of parser plugin instances * */ public abstract class ParserPluginFactory { - private static Class<?> ANTLR4_CLASS=null; - /** * creates the ANTLR 4 parser * @return the factory for the parser */ - public static ParserPluginFactory antlr4() { - if (ANTLR4_CLASS==null) { - String name = "org.apache.groovy.parser.antlr4.Antlr4PluginFactory"; - try { - ANTLR4_CLASS = - Class.forName(name, false, ParserPluginFactory.class.getClassLoader()); - } catch (Exception e) { - throw new GroovyRuntimeException("Could not find or load parser plugin factory for antlr4", e); - } - } - try { - return AccessController.doPrivileged(new PrivilegedExceptionAction<ParserPluginFactory>() { - public ParserPluginFactory run() throws Exception { - return (ParserPluginFactory) ANTLR4_CLASS.newInstance(); - } - }); - } catch (PrivilegedActionException e) { - throw new GroovyRuntimeException("Could not create instance of parser plugin factory for antlr4", e.getCause()); - } + public static ParserPluginFactory antlr4(CompilerConfiguration compilerConfiguration) { + return new Antlr4PluginFactory(compilerConfiguration); } /** http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/build.gradle ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/build.gradle b/subprojects/parser-antlr4/build.gradle index f813360..f69c40b 100644 --- a/subprojects/parser-antlr4/build.gradle +++ b/subprojects/parser-antlr4/build.gradle @@ -75,5 +75,5 @@ sourceSets.test.groovy.srcDirs += file("$srcTest/groovy") sourceSets.test.resources.srcDirs += file("$srcTest/resources") tasks.withType(Test) { - jvmArgs "-Dgroovy.attach.groovydoc=true", "-Dgroovy.antlr4.cache.threshold=100" + jvmArgs /*"-Dgroovy.attach.groovydoc=true", "-Dgroovy.attach.runtime.groovydoc=true",*/ "-Dgroovy.antlr4.cache.threshold=100" } http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/Antlr4Parser.java ---------------------------------------------------------------------- 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 ebe569c..8c13e57 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,12 +28,20 @@ import org.codehaus.groovy.control.CompilerConfiguration; * Created on 2016/08/14 */ public class Antlr4Parser extends AbstractParser { + private final CompilerConfiguration compilerConfiguration; + + public Antlr4Parser() { + this.compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT); + } + + public Antlr4Parser(CompilerConfiguration compilerConfiguration) { + this.compilerConfiguration = compilerConfiguration; + } @Override protected CompilerConfiguration getCompilerConfiguration() { - CompilerConfiguration configuration = new CompilerConfiguration(CompilerConfiguration.DEFAULT); - configuration.setPluginFactory(new Antlr4PluginFactory()); + compilerConfiguration.setPluginFactory(new Antlr4PluginFactory(compilerConfiguration)); - return configuration; + return compilerConfiguration; } } http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4ParserPlugin.java ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4ParserPlugin.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4ParserPlugin.java index 0f35f1d..abd21f2 100644 --- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4ParserPlugin.java +++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4ParserPlugin.java @@ -21,6 +21,7 @@ package org.apache.groovy.parser.antlr4; import org.codehaus.groovy.GroovyBugError; import org.codehaus.groovy.ast.ModuleNode; import org.codehaus.groovy.control.CompilationFailedException; +import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.ParserPlugin; import org.codehaus.groovy.control.SourceUnit; import org.codehaus.groovy.control.io.ReaderSource; @@ -40,6 +41,11 @@ import java.io.Reader; */ public class Antlr4ParserPlugin implements ParserPlugin { private ReaderSource readerSource; + private CompilerConfiguration compilerConfiguration; + + public Antlr4ParserPlugin(CompilerConfiguration compilerConfiguration) { + this.compilerConfiguration = compilerConfiguration; + } @Override public Reduction parseCST(SourceUnit sourceUnit, java.io.Reader reader) throws CompilationFailedException { @@ -70,7 +76,7 @@ public class Antlr4ParserPlugin implements ParserPlugin { sourceUnit.setSource(this.readerSource); } - AstBuilder builder = new AstBuilder(sourceUnit); + AstBuilder builder = new AstBuilder(sourceUnit, compilerConfiguration); return builder.buildAST(); } http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4PluginFactory.java ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4PluginFactory.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4PluginFactory.java index 10309d0..2aeca9d 100644 --- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4PluginFactory.java +++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/Antlr4PluginFactory.java @@ -18,6 +18,7 @@ */ package org.apache.groovy.parser.antlr4; +import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.ParserPlugin; import org.codehaus.groovy.control.ParserPluginFactory; @@ -28,8 +29,14 @@ import org.codehaus.groovy.control.ParserPluginFactory; * Created on 2016/08/14 */ public class Antlr4PluginFactory extends ParserPluginFactory { + private CompilerConfiguration compilerConfiguration; + + public Antlr4PluginFactory(CompilerConfiguration compilerConfiguration) { + this.compilerConfiguration = compilerConfiguration; + } + @Override public ParserPlugin createParserPlugin() { - return new Antlr4ParserPlugin(); + return new Antlr4ParserPlugin(compilerConfiguration); } } http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/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 01bd38a..5f2d31d 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 @@ -112,6 +112,7 @@ import org.codehaus.groovy.ast.stmt.TryCatchStatement; import org.codehaus.groovy.ast.stmt.WhileStatement; import org.codehaus.groovy.control.CompilationFailedException; import org.codehaus.groovy.control.CompilePhase; +import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.SourceUnit; import org.codehaus.groovy.control.messages.SyntaxErrorMessage; import org.codehaus.groovy.runtime.DefaultGroovyMethods; @@ -358,8 +359,9 @@ import static org.codehaus.groovy.runtime.DefaultGroovyMethods.last; */ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements GroovyParserVisitor<Object> { - public AstBuilder(SourceUnit sourceUnit) { + public AstBuilder(SourceUnit sourceUnit, CompilerConfiguration compilerConfiguration) { this.sourceUnit = sourceUnit; + this.compilerConfiguration = compilerConfiguration; this.moduleNode = new ModuleNode(sourceUnit); this.lexer = new GroovyLangLexer(createCharStream(sourceUnit)); @@ -370,7 +372,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov this.parser.setErrorHandler(new DescriptiveErrorStrategy(this.lexer.getInputStream())); this.tryWithResourcesASTTransformation = new TryWithResourcesASTTransformation(this); - this.groovydocManager = GroovydocManager.getInstance(); + this.groovydocManager = new GroovydocManager(compilerConfiguration); } private CharStream createCharStream(SourceUnit sourceUnit) { @@ -4758,6 +4760,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov private final ModuleNode moduleNode; private final SourceUnit sourceUnit; + private final CompilerConfiguration compilerConfiguration; private final GroovyLangLexer lexer; private final GroovyLangParser parser; private final TryWithResourcesASTTransformation tryWithResourcesASTTransformation; http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovydocManager.java ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovydocManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovydocManager.java index ea73475..227ead7 100644 --- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovydocManager.java +++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovydocManager.java @@ -29,6 +29,7 @@ import org.codehaus.groovy.ast.AnnotatedNode; import org.codehaus.groovy.ast.AnnotationNode; import org.codehaus.groovy.ast.ClassHelper; import org.codehaus.groovy.ast.expr.ConstantExpression; +import org.codehaus.groovy.control.CompilerConfiguration; import java.util.List; import java.util.regex.Pattern; @@ -46,39 +47,14 @@ public class GroovydocManager { public static final String DOC_COMMENT = GroovydocHolder.DOC_COMMENT; // keys for meta data private static final String GROOVYDOC_PREFIX = "/**"; private static final String RUNTIME_GROOVYDOC_PREFIX = GROOVYDOC_PREFIX + "@"; - private static final String TRUE_STR = "true"; - - @Deprecated - private static final String EXTRACT_DOC_COMMENT = "groovy.extract.doc.comment"; // it will be removed in future releases and replaced with ATTACH_GROOVYDOC - private static final String ATTACH_GROOVYDOC = "groovy.attach.groovydoc"; - private static final boolean ATTACHING_GROOVYDOC_ENABLED; - private static final String ATTACH_RUNTIME_GROOVYDOC = "groovy.attach.runtime.groovydoc"; - private static final boolean ATTACHING_RUNTIME_GROOVYDOC_ENABLED; private static final String VALUE = "value"; - private static final GroovydocManager INSTANCE = new GroovydocManager(); private static final Pattern SPACES_PATTERN = Pattern.compile("\\s+"); + private final boolean groovydocEnabled; + private final boolean runtimeGroovydocEnabled; - static { - ATTACHING_GROOVYDOC_ENABLED = isFeatureEnabled(ATTACH_GROOVYDOC) || isFeatureEnabled(EXTRACT_DOC_COMMENT); - ATTACHING_RUNTIME_GROOVYDOC_ENABLED = isFeatureEnabled(ATTACH_RUNTIME_GROOVYDOC); - } - - private static boolean isFeatureEnabled(String featureOpt) { - boolean result; - - try { - result = TRUE_STR.equals(System.getProperty(featureOpt)); - } catch (Exception e) { - result = false; - } - - return result; - } - - private GroovydocManager() {} - - public static GroovydocManager getInstance() { - return INSTANCE; + public GroovydocManager(CompilerConfiguration compilerConfiguration) { + this.groovydocEnabled = compilerConfiguration.isGroovydocEnabled(); + this.runtimeGroovydocEnabled = compilerConfiguration.isRuntimeGroovydocEnabled(); } /** @@ -86,6 +62,10 @@ public class GroovydocManager { * */ public void handle(ASTNode node, GroovyParser.GroovyParserRuleContext ctx) { + if (!(groovydocEnabled || runtimeGroovydocEnabled)) { + return; + } + if (!asBoolean(node) || !asBoolean(ctx)) { return; } @@ -103,7 +83,7 @@ public class GroovydocManager { * Attach doc comment to member node as meta data */ private void attachDocCommentAsMetaData(ASTNode node, String docCommentNodeText) { - if (!ATTACHING_GROOVYDOC_ENABLED) { + if (!groovydocEnabled) { return; } @@ -118,11 +98,15 @@ public class GroovydocManager { * Attach Groovydoc annotation to the target element */ private void attachGroovydocAnnotation(ASTNode node, String docCommentNodeText) { + if (!runtimeGroovydocEnabled) { + return; + } + if (!(node instanceof AnnotatedNode)) { return; } - if (!(ATTACHING_RUNTIME_GROOVYDOC_ENABLED || docCommentNodeText.startsWith(RUNTIME_GROOVYDOC_PREFIX))) { + if (!docCommentNodeText.startsWith(RUNTIME_GROOVYDOC_PREFIX)) { return; } http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy ---------------------------------------------------------------------- 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 d627229..c4fb203 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 @@ -18,6 +18,7 @@ */ package org.apache.groovy.parser.antlr4 +import org.apache.groovy.parser.antlr4.util.ASTComparatorCategory import org.codehaus.groovy.ast.ClassNode import org.codehaus.groovy.ast.FieldNode import org.codehaus.groovy.ast.MethodNode @@ -25,6 +26,7 @@ import org.codehaus.groovy.ast.Parameter import org.codehaus.groovy.ast.PropertyNode import org.codehaus.groovy.ast.stmt.AssertStatement import org.codehaus.groovy.ast.stmt.ExpressionStatement +import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.syntax.Token import static org.apache.groovy.parser.antlr4.TestUtils.doRunAndTest @@ -73,7 +75,9 @@ class GroovyParserTest extends GroovyTestCase { } private static doTestAttachedComments() { - def (newAST, oldAST) = doTest('core/Comments_02.groovy') + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT) + compilerConfiguration.setOptimizationOptions([(CompilerConfiguration.GROOVYDOC): true]) + def (newAST, oldAST) = doTest('core/Comments_02.groovy', ASTComparatorCategory.DEFAULT_CONFIGURATION, compilerConfiguration) List<ClassNode> classes = new ArrayList<>(newAST.classes).sort { c1, c2 -> c1.name <=> c2.name } List<MethodNode> methods = new ArrayList<>(newAST.methods).sort { m1, m2 -> m1.name <=> m2.name } @@ -385,7 +389,10 @@ class GroovyParserTest extends GroovyTestCase { } void "test groovy core - Groovydoc"() { - doRunAndTestAntlr4('core/Groovydoc_01x.groovy') + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT) + compilerConfiguration.setOptimizationOptions([(CompilerConfiguration.RUNTIME_GROOVYDOC): true]) + + doRunAndTestAntlr4('core/Groovydoc_01x.groovy', compilerConfiguration) } void "test groovy core - Script"() { http://git-wip-us.apache.org/repos/asf/groovy/blob/13507791/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/TestUtils.groovy ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/TestUtils.groovy b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/TestUtils.groovy index af2cb16..655080d 100644 --- a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/TestUtils.groovy +++ b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/TestUtils.groovy @@ -68,9 +68,13 @@ class TestUtils { return doTest(path, addIgnore(ignoreClazzList, ASTComparatorCategory.LOCATION_IGNORE_LIST)) } - @CompileDynamic static doTest(String path, conf) { - AbstractParser antlr4Parser = new Antlr4Parser() + doTest(path, conf, new CompilerConfiguration(CompilerConfiguration.DEFAULT)) + } + + @CompileDynamic + static doTest(String path, conf, CompilerConfiguration compilerConfiguration) { + AbstractParser antlr4Parser = new Antlr4Parser(compilerConfiguration) AbstractParser antlr2Parser = new Antlr2Parser() File file = new File("$RESOURCES_PATH/$path"); @@ -250,16 +254,16 @@ class TestUtils { doRunAndTestAntlr4(path) } - static doRunAndTestAntlr4(String path) { - assert executeScript(path); + static doRunAndTestAntlr4(String path, CompilerConfiguration compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT)) { + assert executeScript(path, compilerConfiguration); } static doRunAndTestAntlr2(String path) { assert executeScript(createAntlr2Shell(), "$RESOURCES_PATH/$path") } - static executeScript(String path) { - executeScript(createAntlr4Shell(), "$RESOURCES_PATH/$path") + static executeScript(String path, CompilerConfiguration compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT)) { + executeScript(createAntlr4Shell(compilerConfiguration), "$RESOURCES_PATH/$path") } static executeScript(GroovyShell gsh, String path) { @@ -276,11 +280,10 @@ class TestUtils { } } - static GroovyShell createAntlr4Shell() { - CompilerConfiguration configuration = new CompilerConfiguration(CompilerConfiguration.DEFAULT) - configuration.pluginFactory = new Antlr4PluginFactory() + static GroovyShell createAntlr4Shell(CompilerConfiguration compilerConfiguration = new CompilerConfiguration(CompilerConfiguration.DEFAULT)) { + compilerConfiguration.pluginFactory = new Antlr4PluginFactory(compilerConfiguration) - return new GroovyShell(configuration); + return new GroovyShell(compilerConfiguration); } static GroovyShell createAntlr2Shell() {