RFR: JDK-8042981: Strip type annotations in Types' utility methods [v2]
Liam Miller-Cushon
cushon at openjdk.org
Thu Sep 22 16:54:23 UTC 2022
On Sun, 26 Jun 2022 22:52:43 GMT, Joe Darcy <darcy at openjdk.org> wrote:
>> Early review for JDK-8042981: "Strip type annotations in Types' utility methods". I work more often in the Element world rather than the Type word of the annotation processing APIs.
>>
>> The type annotations on primitive types are *not* cleared by the existing annotation clearing mechanisms. I suspect Type.Visitor is missing a case for primitive types. Someone with familiarity with javac's type modeling should take a look; thanks.
>
> Joe Darcy has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
>
> - Update visitor; all langtools regression tests pass.
> - Merge branch 'master' into JDK-8042981
> - JDK-8042981: Strip type annotations in Types' utility methods
src/java.compiler/share/classes/javax/lang/model/util/Types.java line 40:
> 38: * Where a method returns a type mirror or a collection of type
> 39: * mirrors, any type mirrors represent types with no type annotations,
> 40: * unless otherwise indicated.
I'm seeing `erasure` preserve type annotations on the array type (but not its component) after this change: `erasure(@A int @B []) = int @B []`. (Here's the [repro](https://gist.github.com/cushon/e0a59cc291c3b83204b9139addb01340).)
Is that deliberate, or is this still work in progress?
-------------
PR: https://git.openjdk.org/jdk/pull/8984
More information about the compiler-dev
mailing list