// !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -OPT_IN_IS_NOT_ENABLED // WITH_STDLIB // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference interface TestInterface { fun emit(r: R) fun get(): R } @OptIn(ExperimentalTypeInference::class) fun build(block: TestInterface.() -> Unit) {} @OptIn(ExperimentalTypeInference::class) fun build2(block: TestInterface.() -> Unit) {} @OptIn(ExperimentalTypeInference::class) fun build3(block: TestInterface.() -> Unit) {} @OptIn(ExperimentalTypeInference::class) fun build4(x: R2, 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" }