Don't store PsiElement in LocalQuickFix instance (EA-90970 - PIEAE: PsiInvalidElementAccessException.createByNode)
This commit is contained in:
@@ -56,14 +56,16 @@ import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
|
||||
import org.jetbrains.kotlin.idea.findUsages.handlers.KotlinFindClassUsagesHandler
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.*
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
import org.jetbrains.kotlin.util.findCallableMemberBySignature
|
||||
import org.jetbrains.kotlin.utils.singletonOrEmptyList
|
||||
import java.awt.GridBagConstraints
|
||||
@@ -343,16 +345,19 @@ class UnusedSymbolInspection : AbstractKotlinInspection() {
|
||||
}
|
||||
}
|
||||
|
||||
class SafeDeleteFix(val declaration: KtDeclaration) : LocalQuickFix {
|
||||
override fun getName() =
|
||||
class SafeDeleteFix(declaration: KtDeclaration) : LocalQuickFix {
|
||||
private val name =
|
||||
if (declaration is KtConstructor<*>) "Safe delete constructor"
|
||||
else QuickFixBundle.message("safe.delete.text", declaration.name)
|
||||
|
||||
override fun getName() = name
|
||||
|
||||
override fun getFamilyName() = "Safe delete"
|
||||
|
||||
override fun startInWriteAction(): Boolean = false
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val declaration = descriptor.psiElement.getStrictParentOfType<KtDeclaration>() ?: return
|
||||
if (!FileModificationService.getInstance().prepareFileForWrite(declaration.containingFile)) return
|
||||
SwingUtilities.invokeLater {
|
||||
SafeDeleteHandler.invoke(project, arrayOf(declaration), false)
|
||||
|
||||
Reference in New Issue
Block a user