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