On Fri, 17 Jun 2022 14:19:11 GMT, Adam Sotona <asot...@openjdk.org> wrote:

> The symbolic constants API (`java.lang.constant`) was designed, in part, to 
> provide bytecode parsing and generation APIs with a validated, common, 
> symbolic form for constants in Java class files. 
> 
> There is an easy way to create a `ClassDesc` from a binary name 
> (`ClassDesc::of`) or a field descriptor (`ClassDesc::ofDescriptor`) but not 
> from an internal name. But, the internal name is common in low-level 
> bytecode-manipulation code. 
> 
> This patch adds `ClassDesc::ofInternalName` static factory method that 
> creates a `ClassDesc` from class internal name.
> Class internal name validation and extended ClassDescTest are also parts of 
> this patch.
> 
> CSR is linked with the issue.
> 
> Please review.
> 
> Thank you,
> Adam

I've worked with ClassDesc quite a bit as well, and often found myself wanting 
to do the opposite. i.e. if I have a `ClassDesc`, convert it to an internal 
name string (to give to ASM).

There are also methods to get the descriptor, as well as display name & package 
name from a `ClassDesc`. So, I'd like to suggest adding a method to get the 
internal name from a `ClassDesc` as well.

test/jdk/java/lang/constant/ClassDescTest.java line 136:

> 134: 
> 135:         List<ClassDesc> stringClassDescs = 
> Arrays.asList(ClassDesc.ofDescriptor("Ljava/lang/String;"),
> 136:                                                         
> ClassDesc.ofInternalName("java/lang/String"),                                 
>                        ClassDesc.of("java.lang", "String"),

Looks like an accidental duplicate of `ClassDesc.of("java.lang", "String")`?
Suggestion:

                                                        
ClassDesc.ofInternalName("java/lang/String"),

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

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

Reply via email to