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.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 {
|
||||
|
||||
Reference in New Issue
Block a user