[FIR IDE] Fix CliFe10AnalysisFacade, so it can be used as a Project component

This commit is contained in:
Yan Zhulanow
2021-10-27 02:58:31 +09:00
parent 0388f1e5ca
commit b075fe8741
3 changed files with 14 additions and 7 deletions
@@ -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 {
@@ -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
@@ -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)
}