From 81f5a2952666590eb2da5c013d18f1b1462f1bb4 Mon Sep 17 00:00:00 2001 From: fitermay Date: Mon, 5 Jun 2017 01:07:53 -0400 Subject: [PATCH] Make overridden member open: invalidate cached state on PSI modification Before, waiting for inspection rerun was necessary Also rename: computeState --> computeInfo Related to KT-17740 --- .../idea/quickfix/MakeOverriddenMemberOpenFix.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeOverriddenMemberOpenFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeOverriddenMemberOpenFix.kt index 26e49cf471a..dadf1166b85 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeOverriddenMemberOpenFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeOverriddenMemberOpenFix.kt @@ -21,11 +21,15 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import com.intellij.psi.SmartPsiElementPointer +import com.intellij.psi.util.CachedValueProvider +import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.* import org.jetbrains.kotlin.descriptors.isOverridable import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny +import org.jetbrains.kotlin.idea.core.util.CachedValue +import org.jetbrains.kotlin.idea.core.util.getValue import org.jetbrains.kotlin.idea.refactoring.canRefactor import org.jetbrains.kotlin.lexer.KtTokens.OPEN_KEYWORD import org.jetbrains.kotlin.psi.KtCallableDeclaration @@ -39,8 +43,8 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode private typealias DeclPtr = SmartPsiElementPointer class MakeOverriddenMemberOpenFix(declaration: KtDeclaration) : KotlinQuickFixAction(declaration) { - private val myQuickFixInfo: QuickFixInfo by lazy { - computeState() + private val myQuickFixInfo: QuickFixInfo by CachedValue(declaration.project) { + CachedValueProvider.Result.createSingleDependency(computeInfo(), PsiModificationTracker.MODIFICATION_COUNT) } private val containingDeclarationsNames @@ -49,7 +53,7 @@ class MakeOverriddenMemberOpenFix(declaration: KtDeclaration) : KotlinQuickFixAc private val overriddenNonOverridableMembers get() = myQuickFixInfo.declarations - private fun computeState(): QuickFixInfo { + private fun computeInfo(): QuickFixInfo { val element = element ?: return QUICKFIX_UNAVAILABLE val overriddenNonOverridableMembers = mutableListOf() val containingDeclarationsNames = mutableListOf()