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() {

Reply via email to