You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2026/05/27 02:56:15 UTC

(groovy) branch master updated: GROOVY-12040: restore @Builder retention to RUNTIME in 5.0.x

This is an automated email from the ASF dual-hosted git repository.

paulk-asert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new f1a4483fe4 GROOVY-12040: restore @Builder retention to RUNTIME in 5.0.x
f1a4483fe4 is described below

commit f1a4483fe4bab0f6cd9511fad0abb7016059e557
Author: Paul King <pa...@asert.com.au>
AuthorDate: Tue May 26 20:09:43 2026 +1000

    GROOVY-12040: restore @Builder retention to RUNTIME in 5.0.x
---
 src/main/java/groovy/transform/builder/Builder.java       |  2 +-
 .../codehaus/groovy/transform/BuilderTransformTest.groovy | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/main/java/groovy/transform/builder/Builder.java b/src/main/java/groovy/transform/builder/Builder.java
index 9e8b3ff2b6..4561635350 100644
--- a/src/main/java/groovy/transform/builder/Builder.java
+++ b/src/main/java/groovy/transform/builder/Builder.java
@@ -75,7 +75,7 @@ import static org.codehaus.groovy.transform.BuilderASTTransformation.BuilderStra
  * @see groovy.transform.builder.InitializerStrategy
  */
 @Documented
-@Retention(RetentionPolicy.SOURCE)
+@Retention(RetentionPolicy.RUNTIME)
 @Target({ ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD})
 @GroovyASTTransformationClass({
         "groovy.transform.builder.BuilderASTStubber",
diff --git a/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy b/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
index 75870242dc..b9ae10e80a 100644
--- a/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
+++ b/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
@@ -839,4 +839,19 @@ final class BuilderTransformTest {
         assert new Captain(Captain.createInitializer().first('Kathryn').last('Janeway')).toString() == 'Kathryn Janeway'
         '''
     }
+
+    @Test // GROOVY-12040
+    void testBuilderAnnotationVisibleAtRuntime() {
+        assertScript shell, '''
+            @Builder(builderStrategy=SimpleStrategy, prefix='')
+            class ConnectionSettings {
+                String host = 'localhost'
+            }
+
+            Builder ann = ConnectionSettings.getAnnotation(Builder)
+            assert ann != null
+            assert ann.builderStrategy() == SimpleStrategy
+            assert ann.prefix() == ''
+        '''
+    }
 }