Files
kotlin-fork/compiler/testData/diagnostics/tests/nullabilityAndSmartCasts/kt2146.kt
T
Dmitry Savvinov 33f9576dd1 [NI] Turn off KnownTypeParameterSubstitutor for NI
The main consequence of it is that TYPE_MISMATCH range for control
structures became wider.

Also, for extra safety, don't change behaviour of OI.
2017-12-07 14:05:42 +03:00

56 lines
1.3 KiB
Kotlin
Vendored

// !WITH_NEW_INFERENCE
//KT-2146 Nullability casts in when.
package kt2146
fun f1(s: Int?): Int {
return when (s) {
null -> 3
else -> <!DEBUG_INFO_SMARTCAST!>s<!>
}
}
fun f2(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when (s) {
!is Int -> <!OI;TYPE_MISMATCH!>s<!>
else -> <!DEBUG_INFO_SMARTCAST!>s<!>
}<!>
}
fun f3(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when (s) {
is Int -> <!DEBUG_INFO_SMARTCAST!>s<!>
else -> <!OI;TYPE_MISMATCH!>s<!>
}<!>
}
fun f4(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when {
s == 4 -> <!DEBUG_INFO_SMARTCAST!>s<!>
s == null -> <!OI;TYPE_MISMATCH, DEBUG_INFO_CONSTANT!>s<!>
else -> <!DEBUG_INFO_SMARTCAST!>s<!>
}<!>
}
fun f5(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when (s) {
s -> <!OI;TYPE_MISMATCH!>s<!>
s!! -> <!DEBUG_INFO_SMARTCAST!>s<!>
s -> <!DEBUG_INFO_SMARTCAST!>s<!>
else -> 0
}<!>
}
fun f6(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when {
s is Int -> <!DEBUG_INFO_SMARTCAST!>s<!>
else -> <!OI;TYPE_MISMATCH!>s<!>
}<!>
}
fun f7(s: Int?): Int {
return <!NI;TYPE_MISMATCH!>when {
s !is Int -> <!OI;TYPE_MISMATCH!>s<!>
else -> <!DEBUG_INFO_SMARTCAST!>s<!>
}<!>
}