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