31 lines
509 B
Kotlin
Vendored
31 lines
509 B
Kotlin
Vendored
// !LANGUAGE: +NewInference
|
|
// IGNORE_BACKEND_FIR: JVM_IR
|
|
// WITH_RUNTIME
|
|
|
|
inline fun <T> foo(f: () -> T): String {
|
|
return (f() as? Inv<T>)?.result() ?: "Bad"
|
|
}
|
|
|
|
class Inv<T> {
|
|
fun result(): String = "OK"
|
|
}
|
|
|
|
fun <K> create(): Inv<K> = Inv()
|
|
|
|
fun test(b: Boolean): String {
|
|
return foo {
|
|
if (!b) {
|
|
return@foo create<String>()
|
|
}
|
|
|
|
if (b) {
|
|
create<String>()
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
return test(true)
|
|
} |