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