From f9cc3d9be376f0c31bb95c27567f30b7b8911ca0 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 19 Apr 2019 13:48:07 +0300 Subject: [PATCH] [NI] Fix determining type equality in replacing of extension receiver --- .../kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt | 5 ++--- .../kotlin/resolve/scopes/receivers/ExtensionReceiver.java | 3 --- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt index 804f89eccf8..7937e22501b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt @@ -206,9 +206,8 @@ class ResolvedAtomCompleter( val valueType = receiver.value.type.unwrap() val newValueType = resultSubstitutor.substituteKeepAnnotations(valueType) - val newReceiverValue = receiver.value.replaceType(newValueType) - - if (newReceiverValue != receiver.value) { + if (valueType !== newValueType) { + val newReceiverValue = receiver.value.replaceType(newValueType) functionDescriptor.setExtensionReceiverParameter( ReceiverParameterDescriptorImpl(receiver.containingDeclaration, newReceiverValue, receiver.annotations) ) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExtensionReceiver.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExtensionReceiver.java index 0295808c1fa..a871e09a89d 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExtensionReceiver.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExtensionReceiver.java @@ -54,9 +54,6 @@ public class ExtensionReceiver extends AbstractReceiverValue implements Implicit @NotNull @Override public ReceiverValue replaceType(@NotNull KotlinType newType) { - if (NewKotlinTypeChecker.INSTANCE.equalTypes(receiverType, newType)) { - return this; - } return new ExtensionReceiver(descriptor, newType, getOriginal()); }