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 71b6eb9a534f67b68d08953562c2a02f30217d1c Author: Eric Milles <[email protected]> AuthorDate: Sun Mar 1 12:49:31 2026 -0600 GROOVY-11838: `TYPE_USE` and `TYPE_PARAMETER` not in default targets --- src/main/java/org/codehaus/groovy/ast/AnnotationNode.java | 6 +----- .../org/codehaus/groovy/ast/AnnotationNodeTest.groovy | 13 +++++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java b/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java index 4dc697a1b6..b39906a136 100644 --- a/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java +++ b/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java @@ -47,13 +47,9 @@ public class AnnotationNode extends ASTNode { public static final int RECORD_COMPONENT_TARGET = 1 << 10; public static final int TYPE_TARGET = ANNOTATION_TARGET | 1; // GROOVY-7151 - private static final int ALL_TARGETS = TYPE_TARGET | CONSTRUCTOR_TARGET | METHOD_TARGET - | FIELD_TARGET | PARAMETER_TARGET | LOCAL_VARIABLE_TARGET | ANNOTATION_TARGET - | PACKAGE_TARGET | TYPE_PARAMETER_TARGET | TYPE_USE_TARGET | RECORD_COMPONENT_TARGET; - private final ClassNode classNode; private Map<String, Expression> members; - private int allowedTargets = ALL_TARGETS; + private int allowedTargets = 0x4FF; // GROOVY-11838: JLS 9.6.4.1 private boolean runtimeRetention = false, sourceRetention = false, /*explicit*/ classRetention = false; public AnnotationNode(final ClassNode type) { diff --git a/src/test/groovy/org/codehaus/groovy/ast/AnnotationNodeTest.groovy b/src/test/groovy/org/codehaus/groovy/ast/AnnotationNodeTest.groovy index 862d9b7bc6..aa33bcdcc7 100644 --- a/src/test/groovy/org/codehaus/groovy/ast/AnnotationNodeTest.groovy +++ b/src/test/groovy/org/codehaus/groovy/ast/AnnotationNodeTest.groovy @@ -25,6 +25,19 @@ import static org.junit.jupiter.api.Assertions.* final class AnnotationNodeTest { + // GROOVY-11838 + @Test + void testIsTargetAllowed() { + def node = new AnnotationNode(ClassHelper.OVERRIDE_TYPE) + + assertTrue(node.isTargetAllowed(AnnotationNode.TYPE_TARGET)) + assertTrue(node.isTargetAllowed(AnnotationNode.FIELD_TARGET)) + assertTrue(node.isTargetAllowed(AnnotationNode.METHOD_TARGET)) + + assertFalse(node.isTargetAllowed(AnnotationNode.TYPE_USE_TARGET)) + assertFalse(node.isTargetAllowed(AnnotationNode.TYPE_PARAMETER_TARGET)) + } + @Test void testGetText() { def node = new AnnotationNode(ClassHelper.OVERRIDE_TYPE)
