d5aed62410
isLocalVariable added. Assignment / initialization analysis. Control whether a variable is changed in a loop at the beginning and at the end of the loop. Control whether a variable is captured in a closure. #KT-3175 Fixed. #KT-2266 Fixed. Tests for variable null safety and for variables is/as operations. Loop / closure / variable property tests are included. Old tests changed in accordance with KT-3175. In particular, all three of testSmartcastImpossible were fixed.
17 lines
455 B
Kotlin
Vendored
17 lines
455 B
Kotlin
Vendored
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<!>
|
|
} |