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

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


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

commit 59c042565bc94b00ee3dc01aac06210f4985d4f9
Author: Paul King <[email protected]>
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 d47795990b..b72777a96a 100644
--- a/src/main/java/groovy/transform/builder/Builder.java
+++ b/src/main/java/groovy/transform/builder/Builder.java
@@ -66,7 +66,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("org.codehaus.groovy.transform.BuilderASTTransformation")
 public @interface Builder {
diff --git 
a/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy 
b/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
index 8240926b62..da12f7f7c7 100644
--- a/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
+++ b/src/test/groovy/org/codehaus/groovy/transform/BuilderTransformTest.groovy
@@ -840,4 +840,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() == ''
+        '''
+    }
 }

Reply via email to