On Fri, 19 Sep 2025 07:03:56 GMT, Adam Sotona <[email protected]> wrote:
>> Chen Liang has updated the pull request incrementally with one additional
>> commit since the last revision:
>>
>> Fix links
>
> src/java.base/share/classes/java/lang/classfile/Signature.java line 246:
>
>> 244: *
>> 245: * @param outerType signature of the outer type, may be {@code
>> null}
>> 246: * to indicate this is a top-level class or interface
>
> Actually here is the ambiguity. Null outer type is more than frequently used
> also for inner classes.
> Signatures of inner classes are mainly encoded without the outer type and
> with the $-notation of the outer$inner as the class name.
Clarified by introducing examples of signature strings and on the
className/outerType.
> src/java.base/share/classes/jdk/internal/classfile/impl/ClassRemapperImpl.java
> line 312:
>
>> 310: Signature.ClassTypeSig.of(
>> 311:
>> cts.outerType().map(this::mapSignature).orElse(null),
>> 312: Util.toInternalName(map(cts.classDesc())), //
>> wrong, needs fix with InnerClasses
>
> Signatures of inner classes should be disambiguated to avoid this kind of
> confusions.
I aim to preserve the existing behavior for now. We can create a dedicated RFE
to disambiguate for both here and InnerClasses later.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27380#discussion_r2364767064
PR Review Comment: https://git.openjdk.org/jdk/pull/27380#discussion_r2364765011