// !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -DEPRECATION -OPT_IN_IS_NOT_ENABLED // WITH_RUNTIME // 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" }