Propagate inference session into declaration analyzers

It prevents missing inference session for local declaration (local functions, local classes or objects)

^KT-44801 Fixed
This commit is contained in:
Victor Petukhov
2021-02-12 13:58:27 +03:00
parent dae1f4c05d
commit 6f64fd2fec
19 changed files with 150 additions and 42 deletions
@@ -0,0 +1,34 @@
// WITH_RUNTIME
import kotlin.experimental.ExperimentalTypeInference
interface Callback {
fun onSuccess()
}
public interface SendChannelX<in E> {
public fun close(cause: Throwable? = null): Boolean
}
public interface ProducerScopeX<in E> {
public val channel: SendChannelX<E>
fun foo(x: E)
}
public class FlowX<out T> {}
@OptIn(ExperimentalTypeInference::class)
public fun <T> callbackFlowX(@BuilderInference block: ProducerScopeX<T>.() -> Unit): FlowX<T> = FlowX()
fun foo(): FlowX<String> = callbackFlowX {
object : Callback {
override fun onSuccess() {
channel.close()
}
}
}
fun box(): String {
foo()
return "OK"
}