RFR: 8356894: Adjust CreateSymbols to properly handle the newly added @jdk.internal.RequiresIdentity
Andrey Turbanov
aturbanov at openjdk.org
Thu May 15 09:12:05 UTC 2025
On Wed, 14 May 2025 14:48:15 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
> This patch builds on top of https://github.com/openjdk/jdk/pull/24746, and adds support for `@RequiresIdentity` to `--release`.
>
> Important parts of the patch:
> - `CreateSymbols` now keeps `RuntimeInvisibleTypeAnnotationsAttribute`/`RuntimeVisibleTypeAnnotationsAttribute` annotations
> - for `ct.sym`, the `@RequiresIdentity` annotation is converted to a synthetic `@RequiresIdentity+Annotation`, as for other similar annotations.
> - for parameters, there's a new flag that marks the parameter as "requires identity". The reason is that the other synthetic annotations on symbols used by `ct.sym`/`--release` are normally not added to the model, and hence invisible in the model. Flags are usually used instead of the synthetic annotations in javac. Using this new flag allows us to keep the behavior the same for the `@RequiresIdentity+Annotation`
> - for type variables, the synthetic annotation is filtered out in the API method
src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java line 1578:
> 1576: Assert.check(sym.kind == MTH);
> 1577: sym.flags_field |= RESTRICTED;
> 1578: } else if (proxy.type.tsym == syms.requiresIdentityType.tsym) {
Suggestion:
} else if (proxy.type.tsym == syms.requiresIdentityType.tsym) {
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25232#discussion_r2090678802
More information about the compiler-dev
mailing list