Ayoub created GROOVY-11831:
------------------------------
Summary: Compiler crash with TYPE_USE annotation on void method
during AST transformation
Key: GROOVY-11831
URL: https://issues.apache.org/jira/browse/GROOVY-11831
Project: Groovy
Issue Type: Bug
Components: Compiler
Affects Versions: 5.0.3, 5.0.0
Reporter: Ayoub
h2. Summary
Groovy 5 compiler crashes during class generation when an AST transformation
adds an annotation (without explicit {{{}@Target{}}}) to a method that returns
{{{}void{}}}.
h2. Error Message
{code:java}
BUG! exception in phase 'class generation' in source unit '...'
Adding type annotation @MyAnnotation to non-redirect node: void
{code}
h2. Affected Versions
Tested and confirmed on 5.0.0 and 5.0.3 (latest). Bug is present in all Groovy
5.x releases.
h2. Minimal Reproduction
{code:bash}
git clone https://github.com/ayoube-ait/groovy-bug-repro.git
cd groovy-bug-repro
./gradlew clean :groovy-app:compileGroovy
{code}
Repository: [https://github.com/ayoube-ait/groovy-bug-repro]
h2. Root Cause
# An annotation is defined without explicit {{@Target}} (defaults to all
targets including {{{}TYPE_USE{}}})
# An AST transformation creates a method with {{ClassHelper.VOID_TYPE}} return
type
# The transformation adds the annotation to this void method
# During class generation, {{ExtendedVerifier.extractTypeUseAnnotations()}}
attempts to process the annotation as {{TYPE_USE}}
# It tries to call {{addTypeAnnotations()}} on the {{void}} return type
# {{void}} is a "non-redirect node" causing the crash
h2. Expected Behavior
The compiler should skip TYPE_USE annotation processing for {{void}} return
types instead of crashing.
h2. Related Issues
GROOVY-11479 - Similar crash with TYPE_USE annotations on lambda parameters
(fixed in 5.0.0-alpha-11). That fix addressed lambda parameters but not void
return types in AST-generated methods.
h2. Impact
This bug affects Micronaut Framework's Groovy support. The {{@Internal}}
annotation in micronaut-core has no explicit {{@Target}} and is used in AST
transformations that generate void methods, preventing Groovy function scripts
from compiling with Micronaut 5 + Groovy 5.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)