Fix addDeclaration in case of neigbour PsiErrorElement
Relates to #KTIJ-20214
This commit is contained in:
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.ItemPresentation
|
||||||
import com.intellij.navigation.ItemPresentationProviders
|
import com.intellij.navigation.ItemPresentationProviders
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import com.intellij.psi.PsiErrorElement
|
||||||
import com.intellij.psi.PsiWhiteSpace
|
import com.intellij.psi.PsiWhiteSpace
|
||||||
import com.intellij.psi.impl.CheckUtil
|
import com.intellij.psi.impl.CheckUtil
|
||||||
import com.intellij.psi.stubs.IStubElementType
|
import com.intellij.psi.stubs.IStubElementType
|
||||||
@@ -76,7 +77,11 @@ abstract class KtClassOrObject :
|
|||||||
inline fun <reified T : KtDeclaration> addDeclaration(declaration: T): T {
|
inline fun <reified T : KtDeclaration> addDeclaration(declaration: T): T {
|
||||||
val body = getOrCreateBody()
|
val body = getOrCreateBody()
|
||||||
val anchor = PsiTreeUtil.skipSiblingsBackward(body.rBrace ?: body.lastChild!!, PsiWhiteSpace::class.java)
|
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 {
|
inline fun <reified T : KtDeclaration> addDeclarationAfter(declaration: T, anchor: PsiElement?): T {
|
||||||
|
|||||||
Reference in New Issue
Block a user