blob: 335d155a2eef8621d07b990a9e5a55d10f50b925 [file] [log] [blame]
// !LANGUAGE: +NewInference +FunctionalInterfaceConversion +SamConversionPerArgument +SamConversionForKotlinFunctions
// MODULE: lib
// FILE: A.kt
fun interface KRunnable {
fun invoke(): String
}
fun inA(k: KRunnable): String = k.invoke()
// MODULE: main(lib)
// FILE: B.kt
fun inB(k: KRunnable): String = k.invoke()
fun box(): String {
val first = inA(KRunnable { "O" }) + inB(KRunnable { "K" })
if (first != "OK") return "fail1: $first"
val second = inA { "O" } + inB { "K" }
if (second != "OK") return "fail2: $second"
val f1: () -> String = { "O" }
val f2: () -> String = { "K" }
val third = inA(f1) + inB(f2)
if (third != "OK") return "fail3: $third"
return "OK"
}