Files
kotlin-fork/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/inference.fir.kt
T

34 lines
829 B
Kotlin
Vendored

// !LANGUAGE: +DefinitelyNonNullableTypes
fun <T> toDefNotNull(s: T): T & Any = s!!
fun <K> removeQuestionMark(x: K?): K = x!!
fun Any.foo() {}
fun <E> expectNN(e: E & Any) {}
fun <F> main(x: F, y: F, z: F, w: F, m: F) {
val y1 = toDefNotNull(x) // K instead of K & Any
val y2: F & Any = toDefNotNull(x) // K instead of K & Any
val x1 = removeQuestionMark(x) // T or T & Any
val x2: F & Any = removeQuestionMark(x) // T or T & Any
val z1 = x!!
val z2: F & Any = y!!
val w1 = if (z != null) z else return
val w2: F & Any = if (w != null) w else return
y1.foo()
y2.foo()
x1.foo()
x2.foo()
z1.foo()
z2.foo()
w1.foo()
w2.foo()
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>expectNN<!>(m)
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>expectNN<!>(m!!)
}