You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/03/13 18:13:56 UTC
[groovy] 02/02: GROOVY-9472: add test case
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 7d838089c94b9afd37b5892b9756a396db6865ff
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sun Mar 13 13:10:25 2022 -0500
GROOVY-9472: add test case
---
.../groovy/transform/BuilderTransformTest.groovy | 42 ++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/test/org/codehaus/groovy/transform/BuilderTransformTest.groovy b/src/test/org/codehaus/groovy/transform/BuilderTransformTest.groovy
index 6193741..d0b5415 100644
--- a/src/test/org/codehaus/groovy/transform/BuilderTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/BuilderTransformTest.groovy
@@ -20,6 +20,7 @@ package org.codehaus.groovy.transform
import org.codehaus.groovy.control.CompilerConfiguration
import org.codehaus.groovy.control.customizers.ImportCustomizer
+import org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit
import org.junit.Test
import static groovy.test.GroovyAssert.assertScript
@@ -774,4 +775,45 @@ final class BuilderTransformTest {
assert new FooBuilder().name('Mary').build().name == 'John'
'''
}
+
+ @Test // GROOVY-9472
+ void testInnerClassReference() {
+ def sourceDir = File.createTempDir()
+ def config = new CompilerConfiguration(
+ targetDirectory: File.createTempDir(),
+ jointCompilationOptions: [memStub: true]
+ )
+ try {
+ new File(sourceDir, 'p').mkdir()
+
+ def a = new File(sourceDir, 'Main.groovy')
+ a.write '''
+ import p.Pogo
+
+ /*Pogo.PogoBuilder*/ pb = Pogo.builder()
+ Pogo p = pb.name('Frank Grimes').build()
+
+ assert p.name == 'Frank Grimes'
+ '''
+ def b = new File(sourceDir, 'p/Pogo.groovy')
+ b.write '''
+ package p
+
+ @groovy.transform.builder.Builder
+ class Pogo {
+ String name
+ }
+ '''
+
+ def loader = new GroovyClassLoader(this.class.classLoader)
+ def cu = new JavaAwareCompilationUnit(config, loader)
+ cu.addSources(a, b)
+ cu.compile()
+
+ loader.loadClass('Main').main()
+ } finally {
+ sourceDir.deleteDir()
+ config.targetDirectory.deleteDir()
+ }
+ }
}