Do not lift annotation arguments #22035
Merged
+39
−4
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.
When typing
the annotation arguments are currently lifted, so that the annotation tree of
@Fork(jvmArgs = Array("I'm", "hot"))
becomes:This breaks the assumption that annotation trees are always of the form
new annot(…)
.It's currently worked around in
allTermArguments
where we ignore block statements:scala3/compiler/src/dotty/tools/dotc/ast/TreeInfo.scala
Lines 144 to 148 in 0afabd6
This however falls short in different situations; as this completely ignore argument trees.
To fix this, I propose to not lift argument that are annotation arguments.
There is precedent for this: we actually already do it for Java annotations:
scala3/compiler/src/dotty/tools/dotc/typer/Applications.scala
Lines 502 to 518 in 0afabd6