From 2ff97271e02ab00cde7aff694d978d4501994992 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Fri, 26 Nov 2021 17:26:07 +0100 Subject: [PATCH] Fix addDeclaration in case of neigbour PsiErrorElement Relates to #KTIJ-20214 --- .../psi/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt index 5991b635cef..801828c399b 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt @@ -20,6 +20,7 @@ import com.intellij.lang.ASTNode import com.intellij.navigation.ItemPresentation import com.intellij.navigation.ItemPresentationProviders import com.intellij.psi.PsiElement +import com.intellij.psi.PsiErrorElement import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.impl.CheckUtil import com.intellij.psi.stubs.IStubElementType @@ -76,7 +77,11 @@ abstract class KtClassOrObject : inline fun addDeclaration(declaration: T): T { val body = getOrCreateBody() val anchor = PsiTreeUtil.skipSiblingsBackward(body.rBrace ?: body.lastChild!!, PsiWhiteSpace::class.java) - return body.addAfter(declaration, anchor) as T + return if (anchor?.nextSibling is PsiErrorElement) { + body.addBefore(declaration, anchor) + } else { + body.addAfter(declaration, anchor) + } as T } inline fun addDeclarationAfter(declaration: T, anchor: PsiElement?): T {