Update test for the builder inference and add new ones
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
// !LANGUAGE: +UnrestrictedBuilderInference
|
||||
// !DIAGNOSTICS: -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED
|
||||
// WITH_RUNTIME
|
||||
|
||||
// FILE: main.kt
|
||||
import kotlin.experimental.ExperimentalTypeInference
|
||||
|
||||
interface TestInterface<R> {
|
||||
fun emit(r: R)
|
||||
fun get(): R
|
||||
}
|
||||
|
||||
@UseExperimental(ExperimentalTypeInference::class)
|
||||
fun <R1> build(@BuilderInference block: TestInterface<R1>.() -> Unit) {}
|
||||
|
||||
@UseExperimental(ExperimentalTypeInference::class)
|
||||
fun <R1 : Any> build2(@BuilderInference block: TestInterface<R1>.() -> Unit) {}
|
||||
|
||||
@UseExperimental(ExperimentalTypeInference::class)
|
||||
fun <R1 : R2, R2 : Any> build3(@BuilderInference block: TestInterface<R1>.() -> Unit) {}
|
||||
|
||||
@UseExperimental(ExperimentalTypeInference::class)
|
||||
fun <R1 : R2, R2> build4(x: R2, @BuilderInference block: TestInterface<R1>.() -> 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"
|
||||
}
|
||||
Reference in New Issue
Block a user