blob: 1d2fc9a125b6a9c92715e6ddffc082e846dc0774 [file]
// ISSUE: KT-65103
interface Consumer<in T>
public fun <T> buildConsumer(
block: (Consumer<T>) -> Unit
): T = "O" as T
public fun <T> materialize(): T = "K" as T
fun expectConsumerString(x: Consumer<String>) {}
fun foo1(x: Boolean) = when {
x -> buildConsumer {
expectConsumerString(it)
}
else -> materialize()
}
fun foo2(x: Boolean) =
if (x)
buildConsumer {
expectConsumerString(it)
}
else
materialize()
fun box(): String {
return foo1(true) + foo2(false)
}