FIR IDE: do not search for sealed class inheritors on every class resolve

This commit is contained in:
Ilya Kirillov
2021-04-01 17:55:24 +02:00
parent 0e93924ff3
commit 5ceec858aa
13 changed files with 133 additions and 117 deletions
@@ -12,6 +12,8 @@ import org.jetbrains.kotlin.fir.analysis.CheckersComponent
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirNameConflictsTracker
import org.jetbrains.kotlin.fir.caches.FirCachesFactory
import org.jetbrains.kotlin.fir.caches.FirThreadUnsafeCachesFactory
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
import org.jetbrains.kotlin.fir.extensions.FirExtensionService
import org.jetbrains.kotlin.fir.extensions.FirPredicateBasedProvider
import org.jetbrains.kotlin.fir.extensions.FirRegisteredPluginAnnotations
@@ -51,6 +53,12 @@ fun FirSession.registerThreadUnsafeCaches() {
register(FirCachesFactory::class, FirThreadUnsafeCachesFactory)
}
@OptIn(SessionConfiguration::class)
fun FirSession.registerSealedClassInheritorsProvider() {
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
}
// -------------------------- Resolve components --------------------------
@@ -77,6 +77,7 @@ object FirSessionFactory {
registerCommonComponents(languageVersionSettings)
registerResolveComponents(lookupTracker)
registerJavaSpecificResolveComponents()
registerSealedClassInheritorsProvider()
val kotlinScopeProvider = KotlinScopeProvider(::wrapScopeWithJvmMapped)
@@ -127,6 +128,7 @@ object FirSessionFactory {
return FirLibrarySession(moduleInfo, sessionProvider).apply {
registerThreadUnsafeCaches()
registerCommonComponents(languageVersionSettings)
registerSealedClassInheritorsProvider()
val javaSymbolProvider = JavaSymbolProvider(this, project, scope)