// !LANGUAGE: +UnrestrictedBuilderInference // WITH_RUNTIME // TARGET_BACKEND: JVM // IGNORE_BACKEND: WASM // FILE: Test.java class Test { static T foo(T x) { return x; } } // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference @OptIn(ExperimentalTypeInference::class) fun build(@BuilderInference block: TestInterface.() -> Unit) {} @OptIn(ExperimentalTypeInference::class) fun build2(@BuilderInference block: TestInterface.() -> Unit) {} class In interface TestInterface { fun emit(r: R) fun get(): R fun getIn(): In } fun id(x: U) = x fun intersect(vararg x: In): E = null as E fun box(): String { val ret = build { emit("1") intersect(getIn(), getIn()) intersect(getIn(), Test.foo(getIn())) intersect(Test.foo(getIn()), Test.foo(getIn())) intersect(Test.foo(getIn()), getIn()) "" } return "OK" }