8282776: Bad NullPointerException message when invoking an interface MethodHandle on a null receiver
Reviewed-by: psandoz
This commit is contained in:
parent
072f2c461e
commit
489b27d2c0
@ -416,9 +416,14 @@ sealed class DirectMethodHandle extends MethodHandle {
|
|||||||
}
|
}
|
||||||
Object checkReceiver(Object recv) {
|
Object checkReceiver(Object recv) {
|
||||||
if (!caller.isInstance(recv)) {
|
if (!caller.isInstance(recv)) {
|
||||||
|
if (recv != null) {
|
||||||
String msg = String.format("Receiver class %s is not a subclass of caller class %s",
|
String msg = String.format("Receiver class %s is not a subclass of caller class %s",
|
||||||
recv.getClass().getName(), caller.getName());
|
recv.getClass().getName(), caller.getName());
|
||||||
throw new IncompatibleClassChangeError(msg);
|
throw new IncompatibleClassChangeError(msg);
|
||||||
|
} else {
|
||||||
|
String msg = String.format("Cannot invoke %s with null receiver", member);
|
||||||
|
throw new NullPointerException(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return recv;
|
return recv;
|
||||||
}
|
}
|
||||||
@ -444,9 +449,14 @@ sealed class DirectMethodHandle extends MethodHandle {
|
|||||||
@Override
|
@Override
|
||||||
Object checkReceiver(Object recv) {
|
Object checkReceiver(Object recv) {
|
||||||
if (!refc.isInstance(recv)) {
|
if (!refc.isInstance(recv)) {
|
||||||
|
if (recv != null) {
|
||||||
String msg = String.format("Receiver class %s does not implement the requested interface %s",
|
String msg = String.format("Receiver class %s does not implement the requested interface %s",
|
||||||
recv.getClass().getName(), refc.getName());
|
recv.getClass().getName(), refc.getName());
|
||||||
throw new IncompatibleClassChangeError(msg);
|
throw new IncompatibleClassChangeError(msg);
|
||||||
|
} else {
|
||||||
|
String msg = String.format("Cannot invoke %s with null receiver", member);
|
||||||
|
throw new NullPointerException(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return recv;
|
return recv;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user