From 0ac2303fada1b37d2a6d48c30fa74769c303198b Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Thu, 10 Oct 2019 21:39:04 +0700 Subject: [PATCH] KotlinSuppressIntentionAction: fix PIEAE #EA-214227 Fix --- .../idea/quickfix/KotlinSuppressIntentionAction.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/KotlinSuppressIntentionAction.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/KotlinSuppressIntentionAction.kt index ff84124e2f4..4c9ebe424f2 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/KotlinSuppressIntentionAction.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/quickfix/KotlinSuppressIntentionAction.kt @@ -26,14 +26,18 @@ import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.util.addAnnotation import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer import org.jetbrains.kotlin.psi.psiUtil.replaceFileAnnotationList import org.jetbrains.kotlin.resolve.BindingContext class KotlinSuppressIntentionAction private constructor( - private val suppressAt: PsiElement, + suppressAt: PsiElement, private val suppressKey: String, private val kind: AnnotationHostKind ) : SuppressIntentionAction() { + val pointer = suppressAt.createSmartPointer() + val project = suppressAt.project + constructor( suppressAt: KtExpression, suppressKey: String, @@ -53,6 +57,7 @@ class KotlinSuppressIntentionAction private constructor( override fun invoke(project: Project, editor: Editor?, element: PsiElement) { if (!element.isValid) return + val suppressAt = pointer.element ?: return if (!FileModificationService.getInstance().preparePsiElementForWrite(element)) return val id = "\"$suppressKey\"" @@ -80,7 +85,7 @@ class KotlinSuppressIntentionAction private constructor( } private fun suppressAtFile(ktFile: KtFile, id: String) { - val psiFactory = KtPsiFactory(suppressAt) + val psiFactory = KtPsiFactory(project) val fileAnnotationList: KtFileAnnotationList? = ktFile.fileAnnotationList if (fileAnnotationList == null) {