Hello,

That does seem to be a bug in the changes I made for

JDK-6304578: (reflect) toGenericString fails to print bounds of type variables on generic methods

The logic in methodToString is used to build messages for exceptions and the omission of the argument information is a likely cause for

JDK-8213299: runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java failed with java.lang.NoSuchMethodException

I'll verify and send out a review for a corrected methodToString if that is the case.

Thanks,

-Joe

On 12/29/2018 11:23 PM, Сергей Цыпанов wrote:
Hi,

looking into Class::methodToString I've found some changes done into it 
recently in JDK 11 repository.

Currently the method looks like this:

private String methodToString(String name, Class<?>[] argTypes) {
     StringBuilder sb = new StringBuilder();
     sb.append(getName() + "." + name + "(");
     if (argTypes != null) {
         Stream.of(argTypes).map(c -> {return (c == null) ? "null" : 
c.getName();}).
             collect(Collectors.joining(","));
     }
     sb.append(")");
     return sb.toString();
}

Here result of Stream.collect() is ignored, i. e. even when condition argTypes 
!= null is true nothing is appended to sb.
It seems in this case we either don’t need this `if` branch or need to append 
to sb.

Am I missing something?

Kind regards,
Sergey Tsypanov

Reply via email to