From b8caefa0c4c67f0ec7bcc3f3c0caf3b727b5e48a Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 10 Jul 2020 14:47:18 +0300 Subject: [PATCH] FIR IDE: always recreate analysis session in tests to avoid breaking its contract --- .../frontend/api/fir/KtFirAnalysisSessionProvider.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt index 9ebe5f1209e..81b0094fd71 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSessionProvider.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.idea.frontend.api.fir +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfo -import org.jetbrains.kotlin.idea.fir.low.level.api.LowLevelFirApiFacade import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider import org.jetbrains.kotlin.psi.KtElement @@ -26,9 +26,14 @@ class KtFirAnalysisSessionProvider(project: Project) : KtAnalysisSessionProvider ) } - override fun getAnalysisSessionFor(contextElement: KtElement): KtAnalysisSession = - analysisSessionByModuleInfoCache.value.getOrPut(contextElement.getModuleInfo()) { + override fun getAnalysisSessionFor(contextElement: KtElement): KtAnalysisSession { + if (ApplicationManager.getApplication().isUnitTestMode) { + @Suppress("DEPRECATION") + return KtFirAnalysisSession.createForElement(contextElement) + } + return analysisSessionByModuleInfoCache.value.getOrPut(contextElement.getModuleInfo()) { @Suppress("DEPRECATION") KtFirAnalysisSession.createForElement(contextElement) } + } } \ No newline at end of file