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()
+        }
+    }
 }