FIR IDE: always recreate analysis session in tests to avoid breaking its contract

This commit is contained in:
Ilya Kirillov
2020-07-10 14:47:18 +03:00
parent 19efd19c6c
commit b8caefa0c4
@@ -5,13 +5,13 @@
package org.jetbrains.kotlin.idea.frontend.api.fir package org.jetbrains.kotlin.idea.frontend.api.fir
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValueProvider
import com.intellij.psi.util.CachedValuesManager import com.intellij.psi.util.CachedValuesManager
import com.intellij.psi.util.PsiModificationTracker import com.intellij.psi.util.PsiModificationTracker
import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo 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.KtAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
@@ -26,9 +26,14 @@ class KtFirAnalysisSessionProvider(project: Project) : KtAnalysisSessionProvider
) )
} }
override fun getAnalysisSessionFor(contextElement: KtElement): KtAnalysisSession = override fun getAnalysisSessionFor(contextElement: KtElement): KtAnalysisSession {
analysisSessionByModuleInfoCache.value.getOrPut(contextElement.getModuleInfo()) { if (ApplicationManager.getApplication().isUnitTestMode) {
@Suppress("DEPRECATION")
return KtFirAnalysisSession.createForElement(contextElement)
}
return analysisSessionByModuleInfoCache.value.getOrPut(contextElement.getModuleInfo()) {
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
KtFirAnalysisSession.createForElement(contextElement) KtFirAnalysisSession.createForElement(contextElement)
} }
}
} }