[FIR] Don't discriminate generics in conflict resolution for callable references
#KT-59430 Fixed
This commit is contained in:
committed by
Space Team
parent
141dc96067
commit
65ff684589
+8
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.getSingleExpectForActualOrNull
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isActual
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.ConeTypeParameterBasedTypeVariable
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||
@@ -53,7 +54,13 @@ class ConeOverloadConflictResolver(
|
||||
override fun chooseMaximallySpecificCandidates(
|
||||
candidates: Set<Candidate>,
|
||||
discriminateAbstracts: Boolean,
|
||||
): Set<Candidate> = chooseMaximallySpecificCandidates(candidates, discriminateAbstracts, discriminateGenerics = true)
|
||||
): Set<Candidate> = chooseMaximallySpecificCandidates(
|
||||
candidates,
|
||||
discriminateAbstracts,
|
||||
// We don't discriminate against generics for callable references because, other than in regular calls,
|
||||
// there is no syntax for specifying generic type arguments.
|
||||
discriminateGenerics = candidates.first().callInfo.callSite !is FirCallableReferenceAccess
|
||||
)
|
||||
|
||||
/**
|
||||
* Partial mirror of [org.jetbrains.kotlin.resolve.calls.results.OverloadingConflictResolver.chooseMaximallySpecificCandidates]
|
||||
|
||||
@@ -8,6 +8,6 @@ class A
|
||||
class B
|
||||
|
||||
fun box(): String {
|
||||
val ref1 = take(::foo) // error before 1.6.20; ok, resolved to (3) since 1.6.20
|
||||
val ref1 = take(::<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>) // error before 1.6.20; ok, resolved to (3) since 1.6.20
|
||||
return "OK"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user