[FIR] Use type without smartcast for local variable with smartcasted initializer

This commit is contained in:
Dmitriy Novozhilov
2021-02-15 12:26:13 +03:00
parent 40e286b354
commit d4c26cca52
24 changed files with 253 additions and 159 deletions
+40
View File
@@ -0,0 +1,40 @@
// ISSUE: KT-44932
// WITH_STDLIB
abstract class PsiElement {
abstract val parent: PsiElement
}
class KtNameReferenceExpression(override val parent: PsiElement) : PsiElement()
class OtherElement(override val parent: PsiElement) : PsiElement()
class KtDotQualifiedExpression : PsiElement() {
override val parent: PsiElement
get() = this
val psi: PsiElement = EndElement()
}
class EndElement : PsiElement() {
override val parent: PsiElement
get() = this
}
fun mark(element: PsiElement): String {
when (element) {
is KtNameReferenceExpression -> {
var parent = element
repeat(2) {
parent = parent.parent
(parent as? KtDotQualifiedExpression)?.psi?.let { return mark(it) }
}
}
}
return if (element is EndElement) "OK" else "Fail"
}
fun box(): String {
val element = KtNameReferenceExpression(OtherElement(KtDotQualifiedExpression()))
return mark(element)
}