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.
22 lines
529 B
Kotlin
22 lines
529 B
Kotlin
trait PsiElement {
|
|
fun getText(): String
|
|
fun getParent(): PsiElement
|
|
}
|
|
|
|
trait JetExpression : PsiElement
|
|
|
|
fun foo1(e: PsiElement) {
|
|
var current: PsiElement? = e
|
|
var first = true
|
|
while (current != null) {
|
|
if (current is JetExpression && first) {
|
|
// Smartcast is possible here
|
|
println(<!DEBUG_INFO_SMARTCAST!>current<!>.getText())
|
|
}
|
|
|
|
current = <!DEBUG_INFO_SMARTCAST!>current<!>.getParent()
|
|
}
|
|
}
|
|
|
|
//from library
|
|
fun println(any: Any?) = throw Exception("$any") |