Files
kotlin-fork/compiler/testData/diagnostics/tests/smartCasts/inference/kt4009.kt
T
Mikhail Glukhikh d5aed62410 Smart casts for local variables not captured in a closure and not changed in a loop, see #KT-3175.
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.
2015-04-16 20:10:58 +03:00

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")