From 52a422350b21c60546d3da7b076a41ba806df609 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 5 Jun 2020 11:30:51 +0300 Subject: [PATCH] FIR IDE: always invalidate PSI -> FIR caches on any change --- .../fir/low/level/api/FirIdeResolveStateService.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirIdeResolveStateService.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirIdeResolveStateService.kt index 6398c393c34..ee97c055a10 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirIdeResolveStateService.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirIdeResolveStateService.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.fir.low.level.api import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.project.Project import com.intellij.openapi.util.ModificationTracker -import org.jetbrains.kotlin.analyzer.TrackableModuleInfo import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo @@ -40,24 +39,25 @@ internal class FirIdeResolveStateServiceImpl(val project: Project) : FirIdeResol return FirModuleResolveStateImpl(provider) } - private fun createModuleData(moduleInfo: IdeaModuleInfo): FirModuleData { + private fun createModuleData(): FirModuleData { val state = createResolveState() - val modificationTracker = (moduleInfo as? TrackableModuleInfo)?.createModificationTracker() ?: fallbackModificationTracker - return FirModuleData(state, modificationTracker) + // We want to invalidate cache on every PSI change for now + // This is needed for working with high level API until the proper caching is implemented + return FirModuleData(state, fallbackModificationTracker) } // TODO: multi thread protection override fun getResolveState(moduleInfo: IdeaModuleInfo): FirModuleResolveState { var moduleData = stateCache.getOrPut(moduleInfo) { - createModuleData(moduleInfo) + createModuleData() } if (moduleData.isOutOfDate()) { - moduleData = createModuleData(moduleInfo) + moduleData = createModuleData() stateCache[moduleInfo] = moduleData } return moduleData.state } override val fallbackModificationTracker: ModificationTracker? = - org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService.getInstance(project).outOfBlockModificationTracker + org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService.getInstance(project).modificationTracker } \ No newline at end of file