From b075fe8741aadb76171c546d50f9094570834b20 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 27 Oct 2021 02:58:31 +0900 Subject: [PATCH] [FIR IDE] Fix CliFe10AnalysisFacade, so it can be used as a Project component --- .../api/descriptors/CliFe10AnalysisFacade.kt | 12 +++++++----- .../analysis/api/descriptors/Fe10AnalysisFacade.kt | 4 ++-- .../api/descriptors/KtFe10AnalysisSession.kt | 5 +++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/CliFe10AnalysisFacade.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/CliFe10AnalysisFacade.kt index a898caaafe6..18e2ffa66e4 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/CliFe10AnalysisFacade.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/CliFe10AnalysisFacade.kt @@ -26,14 +26,16 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull class CliFe10AnalysisFacade(project: Project) : Fe10AnalysisFacade { private val handler by lazy { KtFe10AnalysisHandlerExtension.getInstance(project) } - override val resolveSession: ResolveSession - get() = handler.resolveSession ?: error("Resolution is not performed") + override fun getResolveSession(element: KtElement): ResolveSession { + return handler.resolveSession ?: error("Resolution is not performed") + } - override val deprecationResolver: DeprecationResolver - get() = handler.deprecationResolver ?: error("Resolution is not performed") + override fun getDeprecationResolver(element: KtElement): DeprecationResolver { + return handler.deprecationResolver ?: error("Resolution is not performed") + } override fun analyze(element: KtElement, mode: Fe10AnalysisFacade.AnalysisMode): BindingContext { - return resolveSession.bindingContext + return getResolveSession(element).bindingContext } override fun getOrigin(file: VirtualFile): KtSymbolOrigin { diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/Fe10AnalysisFacade.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/Fe10AnalysisFacade.kt index 039ccc3bf87..24f3eb36f5f 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/Fe10AnalysisFacade.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/Fe10AnalysisFacade.kt @@ -13,8 +13,8 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver import org.jetbrains.kotlin.resolve.lazy.ResolveSession interface Fe10AnalysisFacade { - val resolveSession: ResolveSession - val deprecationResolver: DeprecationResolver + fun getResolveSession(element: KtElement): ResolveSession + fun getDeprecationResolver(element: KtElement): DeprecationResolver fun analyze(element: KtElement, mode: AnalysisMode = AnalysisMode.FULL): BindingContext diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/KtFe10AnalysisSession.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/KtFe10AnalysisSession.kt index 8e887a9b321..2542b1919b8 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/KtFe10AnalysisSession.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/KtFe10AnalysisSession.kt @@ -13,6 +13,8 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolProvider import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver +import org.jetbrains.kotlin.resolve.lazy.ResolveSession @Suppress("LeakingThis") class KtFe10AnalysisSession( @@ -44,6 +46,9 @@ class KtFe10AnalysisSession( override val jvmTypeMapperImpl: KtJvmTypeMapper = KtFe10JvmTypeMapper(this) override val symbolInfoProviderImpl: KtSymbolInfoProvider = KtFe10SymbolInfoProvider(this) + val resolveSession: ResolveSession = getResolveSession(contextElement) + val deprecationResolver: DeprecationResolver = getDeprecationResolver(contextElement) + override fun createContextDependentCopy(originalKtFile: KtFile, elementToReanalyze: KtElement): KtAnalysisSession { return KtFe10AnalysisSession(elementToReanalyze, token) }