Fix addDeclaration in case of neigbour PsiErrorElement

Relates to #KTIJ-20214
This commit is contained in:
Vladimir Dolzhenko
2021-11-26 17:26:07 +01:00
committed by teamcity
parent 3d00c173f3
commit 2ff97271e0
@@ -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 <reified T : KtDeclaration> 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 <reified T : KtDeclaration> addDeclarationAfter(declaration: T, anchor: PsiElement?): T {