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