Do substitution for receivers of old (by passing though OI) callable references properly, with avoiding premature returning from the method

This commit is contained in:
Victor Petukhov
2021-05-21 15:04:44 +03:00
parent 9fd1cbd2e7
commit d5be258291
@@ -213,6 +213,14 @@ public class ResolvedCallImpl<D extends CallableDescriptor> implements MutableRe
}
}
if (dispatchReceiver instanceof ExpressionReceiver) {
dispatchReceiver = dispatchReceiver.replaceType(substitutor.safeSubstitute(dispatchReceiver.getType(), Variance.IN_VARIANCE));
}
if (extensionReceiver instanceof ExtensionReceiver) {
extensionReceiver =
extensionReceiver.replaceType(substitutor.safeSubstitute(extensionReceiver.getType(), Variance.IN_VARIANCE));
}
if (candidateDescriptor.getValueParameters().isEmpty()) return;
List<ValueParameterDescriptor> substitutedParameters = resultingDescriptor.getValueParameters();
@@ -239,14 +247,6 @@ public class ResolvedCallImpl<D extends CallableDescriptor> implements MutableRe
assert substitutedVersion != null : valueParameterDescriptor;
argumentToParameterMap.put(entry.getKey(), argumentMatch.replaceValueParameter(substitutedVersion));
}
if (dispatchReceiver instanceof ExpressionReceiver) {
dispatchReceiver = dispatchReceiver.replaceType(substitutor.safeSubstitute(dispatchReceiver.getType(), Variance.IN_VARIANCE));
}
if (extensionReceiver instanceof ExtensionReceiver) {
extensionReceiver =
extensionReceiver.replaceType(substitutor.safeSubstitute(extensionReceiver.getType(), Variance.IN_VARIANCE));
}
}
@Override