On Wed, 4 Mar 2026 06:39:20 GMT, Hyeonsoo Lee <[email protected]> wrote:

> ## Summary
> 
> Follow-up to [JDK-8341608](https://bugs.openjdk.org/browse/JDK-8341608), 
> which addressed `ClassFileError` propagation in jdeps but did not fix the 
> underlying signature parsing.
> 
> `SignaturesImpl.classTypeSig()` throws `IllegalArgumentException` when 
> parsing a class type signature that contains an empty identifier after the 
> inner class separator `.`.
> 
> ## Problem
> 
> The Scala compiler emits class type signatures such as:
> 
>     
> Lcoursierapi/shaded/scala/collection/immutable/TreeMap$TreeMapBuilder<TK;TV;>.;
> 
> Here the `.` after the type arguments is followed directly by `;` with no 
> inner class name. While this violates JVMS §4.7.9.1 (which requires an 
> identifier after `.`), such signatures exist widely in published Scala 
> artifacts on Maven Central and cannot be recompiled.
> 
> Running `jdeps` against JARs containing these signatures crashes with:
> 
>     Exception in thread "main" com.sun.tools.jdeps.Dependencies$ClassFileError
>     Caused by: java.lang.IllegalArgumentException:
>       Unexpected character ; at position 78, expected an identifier
> 
> ## Fix
> 
> In `classTypeSig()`, the identifier after `.` is now optional when an outer 
> type is already present. On the first iteration (no outer type), an 
> identifier is still strictly required.
> 
> ## Test
> 
> Added `LOuter<TK;TV;>.;` to `goodTypeSignatures` in `SignaturesTest`.

Please follow the https://openjdk.org/guide "Requesting a Change" section:

> If you want to request a change to the JDK, but don’t have the intention to 
> implement/contribute to the change yourself, you should always report it at 
> [bugreport.java.com](https://bugreport.java.com/).

> Before you file an issue, make sure you have read [Things to consider before 
> proposing changes to OpenJDK 
> code](https://openjdk.org/guide/#things-to-consider-before-proposing-changes-to-openjdk-code)
>  and [Why is my change 
> rejected?](https://openjdk.org/guide/#why-is-my-change-rejected) below.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/30041#issuecomment-3999810965

Reply via email to