Files
kotlin-fork/compiler/testData/codegen/box/inference/kt38664.kt
T
2021-07-01 17:40:41 +03:00

40 lines
798 B
Kotlin
Vendored

// IGNORE_BACKEND: JS
// SKIP_MANGLE_VERIFICATION
interface C<A : Any, B : Any> {
fun foo(a: A): B
companion object {
inline fun <reified A : Any, reified B : Any> inlinefun(crossinline fooParam: (A) -> B): C<A, B> {
return object : C<A, B> {
override fun foo(a: A) = fooParam(a)
}
}
}
}
data class A(val s: String) {
companion object : C<A, String> by C.inlinefun(
fooParam = { it.s }
)
}
class OtherB {
var a: String? = null
}
data class B(val a: A?) {
companion object : C<B, OtherB> by C.inlinefun(
fooParam = {
OtherB().apply {
a = it.a?.let(A::foo)
}
}
)
}
fun box(): String {
val b = B(A("OK"))
return B.foo(b).a ?: "fail"
}