NI: Fix callable references resolution when LHS is generic nested class
In case of null qualifier, we should not look into any static scope NB: factory::createCallableProcessor returns NoExplicitReceiver processor in case of null-receiver, that makes resolving the call in the test as `property(::key)` that matches to the property itself, thus leading to overload resolution ambiguity ^KT-35887 Fixed
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
// SKIP_TXT
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty0
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
object A
|
||||
|
||||
fun <T : Any, TProperty : Any?> property(property: KProperty1<T, TProperty>) = A
|
||||
|
||||
fun <TProperty> property(property: KProperty0<TProperty>) = A
|
||||
|
||||
val <K> K.key get() : A = property(Map.Entry<K, *>::key) // overload resolution ambiguity in the NI, OK in the OI
|
||||
@@ -0,0 +1,13 @@
|
||||
// SKIP_TXT
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty0
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
object A
|
||||
|
||||
fun <T : Any, TProperty : Any?> property(property: KProperty1<T, TProperty>) = A
|
||||
|
||||
fun <TProperty> property(property: KProperty0<TProperty>) = A
|
||||
|
||||
val <K> K.key get() : A = property(Map.Entry<K, *>::key) // overload resolution ambiguity in the NI, OK in the OI
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// SKIP_TXT
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty0
|
||||
|
||||
object A
|
||||
|
||||
fun <TProperty> property0(property: KProperty0<TProperty>) = A
|
||||
val <K> K.key get() : A = <!INAPPLICABLE_CANDIDATE!>property0<!>(Map.Entry<K, *>::key) // should be forbidden
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// SKIP_TXT
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
import kotlin.reflect.KProperty0
|
||||
|
||||
object A
|
||||
|
||||
fun <TProperty> property0(property: KProperty0<TProperty>) = A
|
||||
val <K> K.key get() : A = property0(<!TYPE_MISMATCH!>Map.Entry<K, *>::key<!>) // should be forbidden
|
||||
Reference in New Issue
Block a user