diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/overridingUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/overridingUtils.kt new file mode 100644 index 00000000000..9686a7abbc5 --- /dev/null +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/overridingUtils.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.resolve + +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import java.util.* + +fun CallableDescriptor.getOriginalTopmostOverriddenDescriptors(): Set { + return OverridingUtil.getTopmostOverridenDescriptors(this).mapTo(LinkedHashSet()) { it.original } +} diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/descriptorUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/descriptorUtils.kt index a9d5207d5fd..47d25f5745f 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/descriptorUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/descriptorUtils.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.OverridingUtil +import org.jetbrains.kotlin.resolve.getOriginalTopmostOverriddenDescriptors import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor @@ -85,8 +85,8 @@ public fun compareDescriptors(project: Project, currentDescriptor: DeclarationDe if (compareDescriptorsText(project, currentDescriptor, originalDescriptor)) return true if (originalDescriptor is CallableDescriptor && currentDescriptor is CallableDescriptor) { - val overriddenOriginalDescriptor = OverridingUtil.getTopmostOverridenDescriptors(originalDescriptor) - val overriddenCurrentDescriptor = OverridingUtil.getTopmostOverridenDescriptors(currentDescriptor) + val overriddenOriginalDescriptor = originalDescriptor.getOriginalTopmostOverriddenDescriptors() + val overriddenCurrentDescriptor = currentDescriptor.getOriginalTopmostOverriddenDescriptors() if (overriddenOriginalDescriptor.size() != overriddenCurrentDescriptor.size()) return false return (overriddenCurrentDescriptor zip overriddenOriginalDescriptor ).all {