FIR: Optimize access to FirSymbolProvider via session

This commit is contained in:
Denis Zharkov
2019-05-29 16:24:26 +03:00
committed by Mikhail Glukhikh
parent 5e42f0c31d
commit 91d8f1fc88
3 changed files with 42 additions and 13 deletions
@@ -26,18 +26,23 @@ class FirJavaModuleBasedSession(
override val sessionProvider: FirProjectSessionProvider,
scope: GlobalSearchScope,
dependenciesProvider: FirSymbolProvider? = null
) : FirModuleBasedSession(moduleInfo) {
) : FirModuleBasedSession(moduleInfo), FirSymbolProviderAwareSession {
override val firSymbolProvider: FirSymbolProvider
init {
sessionProvider.sessionCache[moduleInfo] = this
firSymbolProvider = FirCompositeSymbolProvider(
listOf(
service<FirProvider>(),
JavaSymbolProvider(this, sessionProvider.project, scope),
dependenciesProvider ?: FirDependenciesSymbolProviderImpl(this)
)
)
registerComponent(
FirSymbolProvider::class,
FirCompositeSymbolProvider(
listOf(
service<FirProvider>(),
JavaSymbolProvider(this, sessionProvider.project, scope),
dependenciesProvider ?: FirDependenciesSymbolProviderImpl(this)
)
)
firSymbolProvider
)
}
}
@@ -49,11 +54,13 @@ class FirLibrarySession private constructor(
packagePartProvider: PackagePartProvider,
kotlinClassFinder: KotlinClassFinder,
javaClassFinder: JavaClassFinder
) : FirSessionBase() {
) : FirSessionBase(), FirSymbolProviderAwareSession {
override val firSymbolProvider: FirSymbolProvider
init {
sessionProvider.sessionCache[moduleInfo] = this
registerComponent(
FirSymbolProvider::class,
firSymbolProvider =
FirCompositeSymbolProvider(
listOf(
KotlinDeserializedJvmSymbolsProvider(
@@ -66,6 +73,10 @@ class FirLibrarySession private constructor(
FirDependenciesSymbolProviderImpl(this)
)
)
registerComponent(
FirSymbolProvider::class,
firSymbolProvider
)
}