From d5be2582914b20fbdfd9a45cb6f4c010e707f03b Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Fri, 21 May 2021 15:04:44 +0300 Subject: [PATCH] Do substitution for receivers of old (by passing though OI) callable references properly, with avoiding premature returning from the method --- .../resolve/calls/model/ResolvedCallImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/model/ResolvedCallImpl.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/model/ResolvedCallImpl.java index 701ac4d8139..504920ee7c7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/model/ResolvedCallImpl.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/model/ResolvedCallImpl.java @@ -213,6 +213,14 @@ public class ResolvedCallImpl 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 substitutedParameters = resultingDescriptor.getValueParameters(); @@ -239,14 +247,6 @@ public class ResolvedCallImpl 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