Don't add LHS type constraint for callable references too early, before the resolution
The constraint depends on a resolution candidate, because it can be Java static or companion object's member (don't need add constraint in this case) ^KT-41978 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
fd2929d2c5
commit
43a83dd07a
+58
@@ -0,0 +1,58 @@
|
||||
// DONT_TARGET_EXACT_BACKEND: WASM
|
||||
// WITH_RUNTIME
|
||||
|
||||
// FILE: main.kt
|
||||
import kotlin.reflect.KFunction2
|
||||
|
||||
class Sample {
|
||||
object A {
|
||||
fun max(x: Int, y: Int): Int {
|
||||
return if (x > y) {
|
||||
x
|
||||
} else {
|
||||
y
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object A2 {
|
||||
fun max(x: Int, y: Int): Int {
|
||||
return if (x > y) {
|
||||
x
|
||||
} else {
|
||||
y
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Checker {
|
||||
fun check(): String {
|
||||
return run(
|
||||
Sample.A::max,
|
||||
{ x, y -> x > y }
|
||||
)
|
||||
}
|
||||
fun check2(): String {
|
||||
return run(
|
||||
A2::max,
|
||||
{ x, y -> x > y }
|
||||
)
|
||||
}
|
||||
abstract fun <T1, T2, R> run(method: KFunction2<T1, T2, R>, fn: (T1, T2) -> Boolean): String
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var result = ( object : Checker() {
|
||||
override fun <T1, T2, R> run(method: KFunction2<T1, T2, R>, fn: (T1, T2) -> Boolean): String {
|
||||
return "O"
|
||||
}
|
||||
} ).check()
|
||||
result += ( object : Checker() {
|
||||
override fun <T1, T2, R> run(method: KFunction2<T1, T2, R>, fn: (T1, T2) -> Boolean): String {
|
||||
return "K"
|
||||
}
|
||||
} ).check2()
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user