bcc8802014
Expression will be checked against expected type later. Theoretically, this is not very good, but it aligns with the old inference, plus it helps avoiding multiple type mismatch diagnostics.
18 lines
478 B
Kotlin
Vendored
18 lines
478 B
Kotlin
Vendored
// !WITH_NEW_INFERENCE
|
|
data class SomeObject(val n: SomeObject?) {
|
|
fun doSomething() {}
|
|
fun next(): SomeObject? = n
|
|
}
|
|
|
|
|
|
fun list(start: SomeObject): SomeObject {
|
|
var e: SomeObject? = start
|
|
for (i in 0..42) {
|
|
if (e == null)
|
|
continue
|
|
// Smart casts are possible because of the continue before
|
|
<!DEBUG_INFO_SMARTCAST!>e<!>.doSomething()
|
|
e = <!DEBUG_INFO_SMARTCAST!>e<!>.next()
|
|
}
|
|
return <!TYPE_MISMATCH!>e<!>
|
|
} |