12bec7cca2
instead of storing it into a captured temporary. This makes the resulting lambdas equivalend to adapted function references produced by PSI2IR or FIR2IR. #KT-42492 Fixed
32 lines
738 B
Kotlin
Vendored
32 lines
738 B
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
// !LANGUAGE: +NewInference
|
|
// ISSUE: KT-33545
|
|
|
|
import kotlin.experimental.ExperimentalTypeInference
|
|
|
|
interface Flow<out T> {
|
|
suspend fun collect(collector: FlowCollector<T>)
|
|
}
|
|
|
|
interface FlowCollector<in T> {
|
|
suspend fun emit(value: T)
|
|
}
|
|
|
|
inline fun <T> Flow<T>.collect(crossinline action: suspend (value: T) -> Unit): Unit {}
|
|
|
|
abstract class LiveData<T>
|
|
|
|
interface LiveDataScope<T> {
|
|
suspend fun emit(value: T)
|
|
}
|
|
|
|
@OptIn(ExperimentalTypeInference::class)
|
|
fun <T> liveData(@BuilderInference block: suspend LiveDataScope<T>.() -> Unit): LiveData<T> = null!!
|
|
|
|
fun <Value> Flow<Value>.asLiveData() = liveData {
|
|
collect(this::emit)
|
|
// collect { emit(it) }
|
|
}
|
|
|
|
fun box(): String = "OK" |