[FIR] Use type without smartcast for local variable with smartcasted initializer
This commit is contained in:
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user