Wire KotlinTypeRefiner in areCallableDescriptorsEquivalent
See the issue for details ^KT-41218 Fixed
This commit is contained in:
+6
-3
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
|
||||
object DescriptorEquivalenceForOverrides {
|
||||
|
||||
@@ -40,7 +41,8 @@ object DescriptorEquivalenceForOverrides {
|
||||
a,
|
||||
b,
|
||||
allowCopiesFromTheSameDeclaration = allowCopiesFromTheSameDeclaration,
|
||||
distinguishExpectsAndNonExpects = distinguishExpectsAndNonExpects
|
||||
distinguishExpectsAndNonExpects = distinguishExpectsAndNonExpects,
|
||||
kotlinTypeRefiner = KotlinTypeRefiner.Default
|
||||
)
|
||||
|
||||
a is PackageFragmentDescriptor && b is PackageFragmentDescriptor -> (a).fqName == (b).fqName
|
||||
@@ -79,7 +81,8 @@ object DescriptorEquivalenceForOverrides {
|
||||
b: CallableDescriptor,
|
||||
allowCopiesFromTheSameDeclaration: Boolean,
|
||||
distinguishExpectsAndNonExpects: Boolean = true,
|
||||
ignoreReturnType: Boolean = false
|
||||
ignoreReturnType: Boolean = false,
|
||||
kotlinTypeRefiner: KotlinTypeRefiner
|
||||
): Boolean {
|
||||
if (a == b) return true
|
||||
if (a.name != b.name) return false
|
||||
@@ -94,7 +97,7 @@ object DescriptorEquivalenceForOverrides {
|
||||
|
||||
if (!ownersEquivalent(a, b, { _, _ -> false }, allowCopiesFromTheSameDeclaration)) return false
|
||||
|
||||
val overridingUtil = OverridingUtil.createWithEqualityAxioms eq@{ c1, c2 ->
|
||||
val overridingUtil = OverridingUtil.create(kotlinTypeRefiner) eq@{ c1, c2 ->
|
||||
if (c1 == c2) return@eq true
|
||||
|
||||
val d1 = c1.declarationDescriptor
|
||||
|
||||
@@ -77,6 +77,14 @@ public class OverridingUtil {
|
||||
return new OverridingUtil(DEFAULT_TYPE_CONSTRUCTOR_EQUALITY, kotlinTypeRefiner);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static OverridingUtil create(
|
||||
@NotNull KotlinTypeRefiner kotlinTypeRefiner,
|
||||
@NotNull KotlinTypeChecker.TypeConstructorEquality equalityAxioms
|
||||
) {
|
||||
return new OverridingUtil(equalityAxioms, kotlinTypeRefiner);
|
||||
}
|
||||
|
||||
private final KotlinTypeRefiner kotlinTypeRefiner;
|
||||
private final KotlinTypeChecker.TypeConstructorEquality equalityAxioms;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user