blob: dad06a82a77525318429182754c7b1db33aabe87 [file] [log] [blame]
// 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)
}