You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by sh...@apache.org on 2017/12/12 05:58:05 UTC

groovy git commit: GROOVY-8402: GroovyScriptEngine.ScriptClassLoader applies compilation customizers twice (closes #641)

Repository: groovy
Updated Branches:
  refs/heads/master 021e3eaf4 -> 78254249b


GROOVY-8402: GroovyScriptEngine.ScriptClassLoader applies compilation customizers twice (closes #641)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/78254249
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/78254249
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/78254249

Branch: refs/heads/master
Commit: 78254249b98d93e80ab1aea0f3832a03b97fb5ed
Parents: 021e3ea
Author: Shil Sinha <sh...@apache.org>
Authored: Sun Dec 3 18:19:57 2017 -0500
Committer: Shil Sinha <sh...@apache.org>
Committed: Tue Dec 12 00:04:12 2017 -0500

----------------------------------------------------------------------
 src/main/groovy/util/GroovyScriptEngine.java    |  8 ------
 .../groovy/util/GroovyScriptEngineTest.groovy   | 29 ++++++++++++++++++++
 2 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/78254249/src/main/groovy/util/GroovyScriptEngine.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/util/GroovyScriptEngine.java b/src/main/groovy/util/GroovyScriptEngine.java
index 9cbb4a8..92e2486 100644
--- a/src/main/groovy/util/GroovyScriptEngine.java
+++ b/src/main/groovy/util/GroovyScriptEngine.java
@@ -228,14 +228,6 @@ public class GroovyScriptEngine implements ResourceConnector {
                 }
             });
 
-            final List<CompilationCustomizer> customizers = config.getCompilationCustomizers();
-            if (customizers != null) {
-                // GROOVY-4813 : apply configuration customizers
-                for (CompilationCustomizer customizer : customizers) {
-                    cu.addPhaseOperation(customizer, customizer.getPhase().getPhaseNumber());
-                }
-            }
-
             return cu;
         }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/78254249/src/test/groovy/util/GroovyScriptEngineTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/groovy/util/GroovyScriptEngineTest.groovy b/src/test/groovy/util/GroovyScriptEngineTest.groovy
index 514521c..1466f57 100644
--- a/src/test/groovy/util/GroovyScriptEngineTest.groovy
+++ b/src/test/groovy/util/GroovyScriptEngineTest.groovy
@@ -18,6 +18,12 @@
  */
 package groovy.util
 
+import org.codehaus.groovy.ast.ClassNode
+import org.codehaus.groovy.classgen.GeneratorContext
+import org.codehaus.groovy.control.CompilePhase
+import org.codehaus.groovy.control.CompilerConfiguration
+import org.codehaus.groovy.control.SourceUnit
+import org.codehaus.groovy.control.customizers.CompilationCustomizer
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
@@ -67,4 +73,27 @@ class GroovyScriptEngineTest extends GroovyTestCase {
 
         assert !new File(temporaryFolder.root, scriptFile.name + '.xml').exists()
     }
+
+    @Test
+    void testCustomizersAppliedOncePerClassNode_GROOVY_8402() {
+        def scriptFile = temporaryFolder.newFile('Script1.groovy')
+        scriptFile << '''
+            class Foo {}
+            assert 1 + 1 == 2 
+        '''
+        def counts = [:].withDefault { 0 }
+
+        def config = new CompilerConfiguration().addCompilationCustomizers(new CompilationCustomizer(CompilePhase.SEMANTIC_ANALYSIS) {
+            @Override
+            void call(SourceUnit source, GeneratorContext context, ClassNode classNode) {
+                counts[classNode.name]++
+            }
+        })
+
+        GroovyScriptEngine scriptEngine = new GroovyScriptEngine([temporaryFolder.root.toURI().toURL()] as URL[])
+        scriptEngine.setConfig(config)
+        scriptEngine.loadScriptByName('Script1.groovy')
+        assert counts['Script1'] == 1
+        assert counts['Foo'] == 1
+    }
 }
\ No newline at end of file