7249d2f889
* fixed NoSuchMethod caused by mismatched signatures of the "invoke" method generated for lambda arguments * added test cases in invoke.kt for KFunction and anonymous functions * added a transformer to wrap the last expression in the bodies of lambdas with return
30 lines
479 B
Kotlin
Vendored
30 lines
479 B
Kotlin
Vendored
// !LANGUAGE: +NewInference
|
|
// 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)
|
|
} |