// !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED // WITH_RUNTIME // IGNORE_BACKEND_FIR: JVM_IR // DONT_TARGET_EXACT_BACKEND: WASM // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference interface TestInterface { fun emit(r: R) fun get(): R } @UseExperimental(ExperimentalTypeInference::class) fun build(@BuilderInference block: TestInterface.() -> Unit) {} @UseExperimental(ExperimentalTypeInference::class) fun build2(@BuilderInference block: TestInterface.() -> Unit) {} @UseExperimental(ExperimentalTypeInference::class) fun build3(@BuilderInference block: TestInterface.() -> Unit) {} @UseExperimental(ExperimentalTypeInference::class) fun build4(x: R2, @BuilderInference block: TestInterface.() -> Unit) {} fun test(a: String?) { val ret1 = build { emit(1) get()?.equals("") val x = get() x?.equals("") x ?: 1 x!! "" } val ret2 = build2 { emit(1) get()?.equals("") val x = get() x?.equals("") x ?: 1 x!! "" } val ret3 = build3 { emit(1) get()?.equals("") val x = get() x?.equals("") x ?: 1 x!! "" } val ret4 = build4(1) { emit(1) get()?.equals("") val x = get() x?.equals("") x ?: 1 x!! "" } } fun box(): String { test("") return "OK" }