From 3adca4782645b19019fd86ac76a60e13bfabf97d Mon Sep 17 00:00:00 2001 From: Jamie Echlin Date: Fri, 14 Feb 2020 15:47:56 +0000 Subject: [PATCH] demonstration of problem when a reloaded class has generic parameters --- .../GroovyScriptEngineReloadingTest.groovy | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/groovy/util/GroovyScriptEngineReloadingTest.groovy b/src/test/groovy/util/GroovyScriptEngineReloadingTest.groovy index 8cfd1983e2d..3e655fa083f 100644 --- a/src/test/groovy/util/GroovyScriptEngineReloadingTest.groovy +++ b/src/test/groovy/util/GroovyScriptEngineReloadingTest.groovy @@ -89,6 +89,28 @@ class GroovyScriptEngineReloadingTest extends GroovyTestCase { execute(100000, 200000, 2) } + void testRecompilingWithGenerics() { + MapFileSystem.instance.modFile('BaseClass.groovy', 'abstract class BaseClass extends Script {}', gse.@time) + + def subClassText = ''' + class SubClass extends BaseClass { + @Override + Object run() { + null + } + } + ''' + MapFileSystem.instance.modFile('SubClass.groovy', subClassText, gse.@time) + + gse.loadScriptByName('SubClass.groovy') + sleep 1000 + + // make a change to the sub-class so that it gets recompiled + MapFileSystem.instance.modFile('SubClass.groovy', subClassText + "\n", gse.@time) + gse.loadScriptByName('SubClass.groovy') + + } + void testDeleteDependent() { sleep 10000 MapFileSystem.instance.modFile('ClassA.groovy', 'DependentClass ic = new DependentClass()', gse.@time as long)