From 777dd15aafa58a1bc57b0786f9c8a5a76a7b543d Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Sat, 11 Mar 2023 22:09:57 +0100 Subject: [PATCH] [kotlin] Invalidate cache on index change #KTIJ-24889 GitOrigin-RevId: 5e590c59448407c9c717b915069271d37da562d2 --- .../resolve/ShortNamesCacheService.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/stubindex/resolve/ShortNamesCacheService.kt b/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/stubindex/resolve/ShortNamesCacheService.kt index e049e34f2a46..d498e6432df2 100644 --- a/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/stubindex/resolve/ShortNamesCacheService.kt +++ b/plugins/kotlin/base/analysis/src/org/jetbrains/kotlin/idea/stubindex/resolve/ShortNamesCacheService.kt @@ -3,27 +3,23 @@ package org.jetbrains.kotlin.idea.stubindex.resolve import com.intellij.openapi.components.service import com.intellij.openapi.project.Project -import com.intellij.openapi.roots.ProjectRootModificationTracker +import com.intellij.openapi.util.ModificationTracker import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import com.intellij.util.indexing.FileBasedIndex -import org.jetbrains.kotlin.idea.caches.project.LibraryModificationTracker -import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener +import com.intellij.util.indexing.ID import org.jetbrains.kotlin.idea.vfilefinder.KotlinShortClassNameFileIndex import java.util.concurrent.ConcurrentHashMap class ShortNamesCacheService(private val project: Project) { + private val tracker = FileBaseIndexModificationTracker(KotlinShortClassNameFileIndex.NAME, project) + private val shortNamesCache = CachedValuesManager.getManager(project).createCachedValue( { - CachedValueProvider.Result.create( - ConcurrentHashMap>(), - LibraryModificationTracker.getInstance(project), - ProjectRootModificationTracker.getInstance(project), - KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker - ) + CachedValueProvider.Result.create(ConcurrentHashMap>(), tracker) }, /* trackValue = */ false ) @@ -45,4 +41,10 @@ class ShortNamesCacheService(private val project: Project) { companion object { fun getInstance(project: Project): ShortNamesCacheService = project.service() } +} + +internal class FileBaseIndexModificationTracker(private val id: ID, private val project: Project): ModificationTracker { + override fun getModificationCount(): Long = + FileBasedIndex.getInstance().getIndexModificationStamp(id, project) + } \ No newline at end of file