02fedeb9ed
If a certain type statement is true on loop entry and all continue paths, then it is also true on exit if the condition did not reassign the variable. ^KT-7676 tag fixed-in-k2
18 lines
396 B
Kotlin
Vendored
18 lines
396 B
Kotlin
Vendored
fun String.next(): String {
|
|
return "abc"
|
|
}
|
|
|
|
fun list(start: String) {
|
|
var e: Any? = start
|
|
if (e==null) return
|
|
while (e is String) {
|
|
// Smart cast due to the loop condition
|
|
if (e.length == 0)
|
|
break
|
|
// We still have smart cast here despite of a break
|
|
e = e.next()
|
|
}
|
|
// e can never be null but we do not know it
|
|
e.hashCode()
|
|
}
|