[FIR] Fix generic sam conversion in call completion

#KT-60903 Fixed
This commit is contained in:
Kirill Rakhman
2023-08-15 19:04:47 +02:00
committed by Space Team
parent 3ecadf1af7
commit 43180597fe
16 changed files with 119 additions and 14 deletions
@@ -0,0 +1,13 @@
================ Step #1 =================
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/MainKt$main$1$1$1.class
out/production/module/MainKt$main$2.class
out/production/module/MainKt.class
End of files
Compiling files:
src/main.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,17 @@
fun main() {
Observable.of(1, 2)
.apply({ observable ->
Observable { subscriber ->
(observable).subscribe(object : Observer<Int> {
override fun next(value: Int) {
subscriber.next(value * 2)
}
})
}
})
.subscribe(object : Subscriber<Int>() {
override fun next(value: Int) {
}
})
}
@@ -0,0 +1,33 @@
open class Subscription
interface Observer<T> {
fun next(value: T)
}
open class Subscriber<T>(observer: Observer<T>? = null) : Subscription(), Observer<T> {
override fun next(value: T) {}
}
fun interface Subscribe<T> {
fun subscribe(subscriber: Subscriber<T>): Subscription
}
fun interface Operator<X, Y> {
fun call(source: Observable<X>): Observable<Y>
}
open class Observable<T>(private val subscribeFn: Subscribe<T>) {
fun <R> apply(operator: Operator<T, R>): Observable<R> {
return operator.call(this)
}
fun subscribe(observer: Observer<T>): Subscription {
return Subscription()
}
companion object {
fun <T> of(vararg elems: T): Observable<T> {
return Observable { Subscription() }
}
}
}