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`.

This pull request has been closed without being integrated.

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

PR: https://git.openjdk.org/jdk/pull/30041

Reply via email to