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.
19 lines
516 B
Kotlin
Vendored
19 lines
516 B
Kotlin
Vendored
fun x(): Boolean { return true }
|
|
|
|
public fun foo(qq: String?): Int {
|
|
var q = qq
|
|
while(true) {
|
|
q!!.length()
|
|
var r = q
|
|
do {
|
|
var p = r
|
|
do {
|
|
// p = r, r = q and q is not null
|
|
<!DEBUG_INFO_SMARTCAST!>p<!>.length()
|
|
} while (!x())
|
|
} while (<!SENSELESS_COMPARISON!>r == null<!>) // r = q and q is not null
|
|
if (!x()) break
|
|
}
|
|
// Smart cast is possible
|
|
return <!DEBUG_INFO_SMARTCAST!>q<!>.length()
|
|
} |