Refine cc7f0e2d83
getDispatchReceiver/getExtensionReceiver always return not-null value,
but in the absence of receiver this value is equal StackValue.none(), i.e.
has a size 1
The tests were passing because of the problems with the test framework:
4b9e20ab8c
This commit is contained in:
@@ -2945,8 +2945,8 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
if (isSuspensionPoint && isSafeCallOrOnStack) {
|
if (isSuspensionPoint && isSafeCallOrOnStack) {
|
||||||
boolean bothReceivers =
|
boolean bothReceivers =
|
||||||
receiver instanceof StackValue.CallReceiver
|
receiver instanceof StackValue.CallReceiver
|
||||||
&& ((StackValue.CallReceiver) receiver).getDispatchReceiver() != null
|
&& ((StackValue.CallReceiver) receiver).getDispatchReceiver().type.getSort() != Type.VOID
|
||||||
&& ((StackValue.CallReceiver) receiver).getExtensionReceiver() != null;
|
&& ((StackValue.CallReceiver) receiver).getExtensionReceiver().type.getSort() != Type.VOID;
|
||||||
Type firstReceiverType =
|
Type firstReceiverType =
|
||||||
bothReceivers
|
bothReceivers
|
||||||
? ((StackValue.CallReceiver) receiver).getDispatchReceiver().type
|
? ((StackValue.CallReceiver) receiver).getDispatchReceiver().type
|
||||||
|
|||||||
@@ -1597,10 +1597,12 @@ public abstract class StackValue {
|
|||||||
AsmUtil.dup(v, extensionReceiver.type, dispatchReceiver.type);
|
AsmUtil.dup(v, extensionReceiver.type, dispatchReceiver.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public StackValue getDispatchReceiver() {
|
public StackValue getDispatchReceiver() {
|
||||||
return dispatchReceiver;
|
return dispatchReceiver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public StackValue getExtensionReceiver() {
|
public StackValue getExtensionReceiver() {
|
||||||
return extensionReceiver;
|
return extensionReceiver;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user