RFR: 8221503: vmTestbase/nsk/jdb/eval/eval001/eval001.java fails with: com.sun.jdi.InvalidTypeException: Can't assign double[][][] to double[][][]

Chris Plummer cjplummer at openjdk.java.net
Tue Apr 27 23:50:53 UTC 2021


On Fri, 23 Apr 2021 15:03:42 GMT, Fairoz Matte <fmatte at openjdk.org> wrote:

> findComponentType() logic is wrong. In findComponentType() method, We always get vm.classesByName() retruns empty list
> list = vm.classesByName(parser.typeName());
> We have "parser.typeName()" retruns " double[][]"
> vm.classesByName("") is expecting the fully qualified name example "java.lang.Double"
> This always returns empty list, resulting into ClassNotLoadedException as it assumes the Component class has not yet been loaded, hence the test case fails.
> 
> There was a suggested fix from Egor Ushakov from JetBrains, I am proposing the same to get this fix. I have verified the patch with required testing it works fine.

src/jdk.jdi/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java line 94:

> 92:      */
> 93:     Type findComponentType(String signature) throws ClassNotLoadedException {
> 94:         return findType(signature);

Do we even need `findComponentType()` any more? Isn't `ReferenceTypeImpl.findType()` sufficient.

The comment above `findComponentType()` is kind of explicit as to why it was needed. Are you sure none of that still applies, and there isn't some edge case that `findType()` is not covering?

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

PR: https://git.openjdk.java.net/jdk/pull/3658


More information about the serviceability-dev mailing list