From 8ffb822c3ca7b572ae7eeb4529c6ed4e65fdc0eb Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Thu, 14 Jan 2021 15:42:39 +0100 Subject: [PATCH] Add way to create the FirAnalysisSession with custom token This way should be used only for old FE wrappers. It is important that Fir session with custom token should be cached, because otherwise session with incorrect validity token could be returned from cache inside analyze call --- .../frontend/api/fir/KtFirAnalysisSession.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt index 99ee02ea4fd..ffff41071fe 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtFirAnalysisSession.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.api.getResolveState import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.ReadActionConfinementValidityToken import org.jetbrains.kotlin.idea.frontend.api.ValidityToken -import org.jetbrains.kotlin.idea.frontend.api.assertIsValidAndAccessible import org.jetbrains.kotlin.idea.frontend.api.fir.components.* import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbolProvider import org.jetbrains.kotlin.idea.frontend.api.fir.utils.EnclosingDeclarationContext @@ -90,9 +89,20 @@ private constructor( } @Deprecated("Please use org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProviderKt.analyze") - internal fun createAnalysisSessionByResolveState(firResolveState: FirModuleResolveState): KtFirAnalysisSession { + internal fun createAnalysisSessionByResolveState(firResolveState: FirModuleResolveState): KtFirAnalysisSession = + @OptIn(InvalidWayOfUsingAnalysisSession::class) + createAnalysisSessionByResolveStateWithCustomValidityToken( + firResolveState, + ReadActionConfinementValidityToken(firResolveState.project) + ) + + @InvalidWayOfUsingAnalysisSession + @Deprecated("This method should be used ONLY for old FE wrappers") + internal fun createAnalysisSessionByResolveStateWithCustomValidityToken( + firResolveState: FirModuleResolveState, + token: ValidityToken + ): KtFirAnalysisSession { val project = firResolveState.project - val token = ReadActionConfinementValidityToken(project) val firSymbolBuilder = KtSymbolByFirBuilder( firResolveState, project,