Files
kotlin-fork/compiler/testData/codegen/box/smartCasts/kt44932.kt
T

41 lines
997 B
Kotlin
Vendored

// 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)
}