Groovy parser does not support annotations on variable declarations #5001
+186
−73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's changed?
Annotations on variables are supported as well.
What's your motivation?
Any additional context
The
@groovy.transform.Field
annotation is a transformer annotation, it changes the scope of a variable within a script to the class level for the script (see javadoc). This means that the original DeclarationExpression is gone, but the Groovy Compiler replaced it by a semi empty ConstantExpression.I put in some work to make it work again, by recreating a DeclarationExpression. This is done very roughly, so the code is neither beautiful nor does restore all type information. At least we can parse
@Field
annotation now, instead of failing. If you have a better idea how to handle this, my ears are open!