Extraction Engine: Use original topmost descriptors when validating extracted code (fixes 'mutablyFlexibleType' test which failed after migration to generic contains/remove/etc. members in collections)
This commit is contained in:
committed by
Alexey Sedunov
parent
07259fa090
commit
5dc0e7f2d5
@@ -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<CallableDescriptor> {
|
||||||
|
return OverridingUtil.getTopmostOverridenDescriptors(this).mapTo(LinkedHashSet()) { it.original }
|
||||||
|
}
|
||||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
|
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
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.ExpressionReceiver
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
|
||||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
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 (compareDescriptorsText(project, currentDescriptor, originalDescriptor)) return true
|
||||||
|
|
||||||
if (originalDescriptor is CallableDescriptor && currentDescriptor is CallableDescriptor) {
|
if (originalDescriptor is CallableDescriptor && currentDescriptor is CallableDescriptor) {
|
||||||
val overriddenOriginalDescriptor = OverridingUtil.getTopmostOverridenDescriptors(originalDescriptor)
|
val overriddenOriginalDescriptor = originalDescriptor.getOriginalTopmostOverriddenDescriptors()
|
||||||
val overriddenCurrentDescriptor = OverridingUtil.getTopmostOverridenDescriptors(currentDescriptor)
|
val overriddenCurrentDescriptor = currentDescriptor.getOriginalTopmostOverriddenDescriptors()
|
||||||
|
|
||||||
if (overriddenOriginalDescriptor.size() != overriddenCurrentDescriptor.size()) return false
|
if (overriddenOriginalDescriptor.size() != overriddenCurrentDescriptor.size()) return false
|
||||||
return (overriddenCurrentDescriptor zip overriddenOriginalDescriptor ).all {
|
return (overriddenCurrentDescriptor zip overriddenOriginalDescriptor ).all {
|
||||||
|
|||||||
Reference in New Issue
Block a user