FIR IDE: Register plugins-related session components in IDE session
Move registering CLI-specific plugin-related components to `registerCliCompilerOnlyComponents`
This commit is contained in:
+31
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyDecla
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.*
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
import org.jetbrains.kotlin.analysis.providers.createAnnotationResolver
|
||||
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
|
||||
import org.jetbrains.kotlin.analysis.providers.createPackageProvider
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
@@ -31,6 +32,9 @@ import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
||||
import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.FirPredicateBasedProvider
|
||||
import org.jetbrains.kotlin.fir.extensions.FirRegisteredPluginAnnotations
|
||||
import org.jetbrains.kotlin.fir.extensions.FirSwitchableExtensionDeclarationsSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaFacade
|
||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
||||
@@ -136,6 +140,20 @@ internal object LLFirSessionFactory {
|
||||
}
|
||||
}
|
||||
|
||||
val projectWithDependenciesScope = contentScope.uniteWith(project.moduleScopeProvider.getModuleLibrariesScope(module))
|
||||
val annotationsResolver = project.createAnnotationResolver(projectWithDependenciesScope)
|
||||
|
||||
// We need FirRegisteredPluginAnnotations and FirPredicateBasedProvider during extensions' registration process
|
||||
register(FirRegisteredPluginAnnotations::class, LLFirIdeRegisteredPluginAnnotations(this@session, annotationsResolver))
|
||||
register(
|
||||
FirPredicateBasedProvider::class,
|
||||
LLFirIdePredicateBasedProvider(
|
||||
this@session,
|
||||
annotationsResolver,
|
||||
project.createDeclarationProvider(projectWithDependenciesScope)
|
||||
)
|
||||
)
|
||||
|
||||
FirSessionFactory.FirSessionConfigurator(this).apply {
|
||||
if (isRootModule) {
|
||||
registerExtendedCommonCheckers()
|
||||
@@ -145,14 +163,22 @@ internal object LLFirSessionFactory {
|
||||
}
|
||||
}.configure()
|
||||
|
||||
val switchableExtensionDeclarationsSymbolProvider =
|
||||
FirSwitchableExtensionDeclarationsSymbolProvider.create(session)
|
||||
|
||||
switchableExtensionDeclarationsSymbolProvider?.let {
|
||||
register(FirSwitchableExtensionDeclarationsSymbolProvider::class, it)
|
||||
}
|
||||
|
||||
val dependencyProvider = DependentModuleProviders(this, dependentProviders)
|
||||
|
||||
register(
|
||||
FirSymbolProvider::class,
|
||||
LLFirModuleWithDependenciesSymbolProvider(
|
||||
this,
|
||||
providers = listOf(
|
||||
providers = listOfNotNull(
|
||||
provider.symbolProvider,
|
||||
switchableExtensionDeclarationsSymbolProvider,
|
||||
JavaSymbolProvider(
|
||||
this,
|
||||
FirJavaFacade(
|
||||
@@ -341,6 +367,10 @@ internal object LLFirSessionFactory {
|
||||
)
|
||||
}
|
||||
|
||||
// We need FirRegisteredPluginAnnotations during extensions' registration process
|
||||
val annotationsResolver = project.createAnnotationResolver(contentScope)
|
||||
register(FirRegisteredPluginAnnotations::class, LLFirIdeRegisteredPluginAnnotations(this@session, annotationsResolver))
|
||||
|
||||
FirSessionFactory.FirSessionConfigurator(this).apply {
|
||||
for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) {
|
||||
registerExtensions(extensionRegistrar.configure())
|
||||
|
||||
+3
-2
@@ -56,8 +56,6 @@ fun FirSession.registerCommonComponents(languageVersionSettings: LanguageVersion
|
||||
register(FirDefaultParametersResolver::class, FirDefaultParametersResolver())
|
||||
|
||||
register(FirExtensionService::class, FirExtensionService(this))
|
||||
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
||||
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
||||
register(GeneratedClassIndex::class, GeneratedClassIndex.create())
|
||||
|
||||
register(FirSubstitutionOverrideStorage::class, FirSubstitutionOverrideStorage(this))
|
||||
@@ -70,6 +68,9 @@ fun FirSession.registerCliCompilerOnlyComponents() {
|
||||
register(FirCachesFactory::class, FirThreadUnsafeCachesFactory)
|
||||
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
|
||||
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
|
||||
|
||||
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
||||
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
||||
}
|
||||
|
||||
@OptIn(SessionConfiguration::class)
|
||||
|
||||
Reference in New Issue
Block a user