Wire KotlinTypeRefiner in areCallableDescriptorsEquivalent
See the issue for details ^KT-41218 Fixed
This commit is contained in:
+5
-2
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.resolve.calls.tower.ImplicitScopeTower
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.TowerResolver
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.isInapplicable
|
||||
import org.jetbrains.kotlin.types.UnwrappedType
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.util.CancellationChecker
|
||||
|
||||
|
||||
@@ -42,7 +43,8 @@ class CallableReferenceOverloadConflictResolver(
|
||||
platformOverloadsSpecificityComparator: PlatformOverloadsSpecificityComparator,
|
||||
cancellationChecker: CancellationChecker,
|
||||
statelessCallbacks: KotlinResolutionStatelessCallbacks,
|
||||
constraintInjector: ConstraintInjector
|
||||
constraintInjector: ConstraintInjector,
|
||||
kotlinTypeRefiner: KotlinTypeRefiner,
|
||||
) : OverloadingConflictResolver<CallableReferenceCandidate>(
|
||||
builtIns,
|
||||
module,
|
||||
@@ -54,7 +56,8 @@ class CallableReferenceOverloadConflictResolver(
|
||||
Companion::createFlatSignature,
|
||||
{ null },
|
||||
{ statelessCallbacks.isDescriptorFromSource(it) },
|
||||
null
|
||||
null,
|
||||
kotlinTypeRefiner,
|
||||
) {
|
||||
companion object {
|
||||
private fun createFlatSignature(candidate: CallableReferenceCandidate) =
|
||||
|
||||
+5
-2
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.resolve.calls.results.OverloadingConflictResolver
|
||||
import org.jetbrains.kotlin.resolve.calls.results.PlatformOverloadsSpecificityComparator
|
||||
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.util.CancellationChecker
|
||||
import java.util.*
|
||||
|
||||
@@ -37,7 +38,8 @@ class NewOverloadingConflictResolver(
|
||||
platformOverloadsSpecificityComparator: PlatformOverloadsSpecificityComparator,
|
||||
cancellationChecker: CancellationChecker,
|
||||
statelessCallbacks: KotlinResolutionStatelessCallbacks,
|
||||
constraintInjector: ConstraintInjector
|
||||
constraintInjector: ConstraintInjector,
|
||||
kotlinTypeRefiner: KotlinTypeRefiner,
|
||||
) : OverloadingConflictResolver<KotlinResolutionCandidate>(
|
||||
builtIns,
|
||||
module,
|
||||
@@ -52,7 +54,8 @@ class NewOverloadingConflictResolver(
|
||||
Companion::createFlatSignature,
|
||||
{ it.variableCandidateIfInvoke },
|
||||
{ statelessCallbacks.isDescriptorFromSource(it) },
|
||||
{ it.resolvedCall.hasSamConversion }
|
||||
{ it.resolvedCall.hasSamConversion },
|
||||
kotlinTypeRefiner,
|
||||
) {
|
||||
|
||||
companion object {
|
||||
|
||||
+5
-2
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isTypeRefinementEnabled
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.varargParameterPosition
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.types.checker.requireOrDescribe
|
||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||
import org.jetbrains.kotlin.util.CancellationChecker
|
||||
@@ -46,7 +47,8 @@ open class OverloadingConflictResolver<C : Any>(
|
||||
private val createFlatSignature: (C) -> FlatSignature<C>,
|
||||
private val getVariableCandidates: (C) -> C?, // for variable WithInvoke
|
||||
private val isFromSources: (CallableDescriptor) -> Boolean,
|
||||
private val hasSAMConversion: ((C) -> Boolean)?
|
||||
private val hasSAMConversion: ((C) -> Boolean)?,
|
||||
private val kotlinTypeRefiner: KotlinTypeRefiner,
|
||||
) {
|
||||
|
||||
private val isTypeRefinementEnabled by lazy { module.isTypeRefinementEnabled() }
|
||||
@@ -137,7 +139,8 @@ open class OverloadingConflictResolver<C : Any>(
|
||||
me,
|
||||
other,
|
||||
allowCopiesFromTheSameDeclaration = isTypeRefinementEnabled,
|
||||
ignoreReturnType = ignoreReturnType
|
||||
ignoreReturnType = ignoreReturnType,
|
||||
kotlinTypeRefiner = kotlinTypeRefiner
|
||||
)
|
||||
) {
|
||||
continue@outerLoop
|
||||
|
||||
Reference in New Issue
Block a user