[FIR IDE] Fix CliFe10AnalysisFacade, so it can be used as a Project component
This commit is contained in:
+7
-5
@@ -26,14 +26,16 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
|||||||
class CliFe10AnalysisFacade(project: Project) : Fe10AnalysisFacade {
|
class CliFe10AnalysisFacade(project: Project) : Fe10AnalysisFacade {
|
||||||
private val handler by lazy { KtFe10AnalysisHandlerExtension.getInstance(project) }
|
private val handler by lazy { KtFe10AnalysisHandlerExtension.getInstance(project) }
|
||||||
|
|
||||||
override val resolveSession: ResolveSession
|
override fun getResolveSession(element: KtElement): ResolveSession {
|
||||||
get() = handler.resolveSession ?: error("Resolution is not performed")
|
return handler.resolveSession ?: error("Resolution is not performed")
|
||||||
|
}
|
||||||
|
|
||||||
override val deprecationResolver: DeprecationResolver
|
override fun getDeprecationResolver(element: KtElement): DeprecationResolver {
|
||||||
get() = handler.deprecationResolver ?: error("Resolution is not performed")
|
return handler.deprecationResolver ?: error("Resolution is not performed")
|
||||||
|
}
|
||||||
|
|
||||||
override fun analyze(element: KtElement, mode: Fe10AnalysisFacade.AnalysisMode): BindingContext {
|
override fun analyze(element: KtElement, mode: Fe10AnalysisFacade.AnalysisMode): BindingContext {
|
||||||
return resolveSession.bindingContext
|
return getResolveSession(element).bindingContext
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getOrigin(file: VirtualFile): KtSymbolOrigin {
|
override fun getOrigin(file: VirtualFile): KtSymbolOrigin {
|
||||||
|
|||||||
+2
-2
@@ -13,8 +13,8 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver
|
|||||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||||
|
|
||||||
interface Fe10AnalysisFacade {
|
interface Fe10AnalysisFacade {
|
||||||
val resolveSession: ResolveSession
|
fun getResolveSession(element: KtElement): ResolveSession
|
||||||
val deprecationResolver: DeprecationResolver
|
fun getDeprecationResolver(element: KtElement): DeprecationResolver
|
||||||
|
|
||||||
fun analyze(element: KtElement, mode: AnalysisMode = AnalysisMode.FULL): BindingContext
|
fun analyze(element: KtElement, mode: AnalysisMode = AnalysisMode.FULL): BindingContext
|
||||||
|
|
||||||
|
|||||||
+5
@@ -13,6 +13,8 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolProvider
|
|||||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver
|
||||||
|
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||||
|
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
class KtFe10AnalysisSession(
|
class KtFe10AnalysisSession(
|
||||||
@@ -44,6 +46,9 @@ class KtFe10AnalysisSession(
|
|||||||
override val jvmTypeMapperImpl: KtJvmTypeMapper = KtFe10JvmTypeMapper(this)
|
override val jvmTypeMapperImpl: KtJvmTypeMapper = KtFe10JvmTypeMapper(this)
|
||||||
override val symbolInfoProviderImpl: KtSymbolInfoProvider = KtFe10SymbolInfoProvider(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 {
|
override fun createContextDependentCopy(originalKtFile: KtFile, elementToReanalyze: KtElement): KtAnalysisSession {
|
||||||
return KtFe10AnalysisSession(elementToReanalyze, token)
|
return KtFe10AnalysisSession(elementToReanalyze, token)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user