43a83dd07a
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
59 lines
1.2 KiB
Kotlin
Vendored
59 lines
1.2 KiB
Kotlin
Vendored
// 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
|
|
}
|