From 8d9d46dae3b13eeaf317c8b7d14d2447fd9b7331 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 11 Feb 2022 09:34:25 +0300 Subject: [PATCH] FIR IDE: Lift extensions registration higher in session creation process We want to do that before creating symbol providers --- .../api/fir/sessions/LLFirSessionFactory.kt | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt index 2f6d7549360..ec727161566 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSessionFactory.kt @@ -88,6 +88,7 @@ internal object LLFirSessionFactory { registerCommonComponents(languageVersionSettings) registerCommonJavaComponents(JavaModuleResolver.getInstance(project)) registerResolveComponents() + registerJavaSpecificResolveComponents() val provider = LLFirProvider( project, @@ -135,6 +136,15 @@ internal object LLFirSessionFactory { } } + FirSessionFactory.FirSessionConfigurator(this).apply { + if (isRootModule) { + registerExtendedCommonCheckers() + } + for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) { + registerExtensions(extensionRegistrar.configure()) + } + }.configure() + val dependencyProvider = DependentModuleProviders(this, dependentProviders) register( @@ -157,15 +167,6 @@ internal object LLFirSessionFactory { register(FirDependenciesSymbolProvider::class, dependencyProvider) register(FirJvmTypeMapper::class, FirJvmTypeMapper(this)) - registerJavaSpecificResolveComponents() - FirSessionFactory.FirSessionConfigurator(this).apply { - if (isRootModule) { - registerExtendedCommonCheckers() - } - for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) { - registerExtensions(extensionRegistrar.configure()) - } - }.configure() configureSession?.invoke(this) } } @@ -305,6 +306,7 @@ internal object LLFirSessionFactory { registerCommonComponents(languageVersionSettings) registerCommonJavaComponents(JavaModuleResolver.getInstance(project)) registerResolveComponents() + registerJavaSpecificResolveComponents() val provider = LLFirProvider( project, @@ -339,6 +341,12 @@ internal object LLFirSessionFactory { ) } + FirSessionFactory.FirSessionConfigurator(this).apply { + for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) { + registerExtensions(extensionRegistrar.configure()) + } + }.configure() + val dependencyProvider = DependentModuleProviders(this, dependentProviders) register( @@ -361,12 +369,6 @@ internal object LLFirSessionFactory { register(FirDependenciesSymbolProvider::class, dependencyProvider) register(FirJvmTypeMapper::class, FirJvmTypeMapper(this)) - registerJavaSpecificResolveComponents() - FirSessionFactory.FirSessionConfigurator(this).apply { - for (extensionRegistrar in FirExtensionRegistrar.getInstances(project)) { - registerExtensions(extensionRegistrar.configure()) - } - }.configure() configureSession?.invoke(this) }