From 44bfb6fde8119d91279293cfec345656633eacdb Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 15 Feb 2022 17:21:50 +0300 Subject: [PATCH] [FIR] Don't register FirJavaElementFinder for common session --- .../cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt | 8 ++++++-- .../org/jetbrains/kotlin/fir/session/FirSessionFactory.kt | 8 ++++++-- .../kotlin/test/frontend/fir/FirFrontendFacade.kt | 1 + .../kotlin/fir/AbstractFirBaseDiagnosticsTest.kt | 3 ++- .../tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt | 2 ++ 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 0b008159b3e..931c177ab24 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -201,6 +201,7 @@ object FirKotlinToJvmBytecodeCompiler { platform: TargetPlatform, analyzerServices: PlatformDependentAnalyzerServices, sourceScope: AbstractProjectFileSearchScope, + needRegisterJavaElementFinder: Boolean, dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {} ): FirSession { return createSessionWithDependencies( @@ -215,6 +216,7 @@ object FirKotlinToJvmBytecodeCompiler { lookupTracker = moduleConfiguration.get(CommonConfigurationKeys.LOOKUP_TRACKER), providerAndScopeForIncrementalCompilation, firExtensionRegistrars, + needRegisterJavaElementFinder, dependenciesConfigurator = { dependencies(moduleConfiguration.jvmClasspathRoots.map { it.toPath() }) dependencies(moduleConfiguration.jvmModularRoots.map { it.toPath() }) @@ -238,7 +240,8 @@ object FirKotlinToJvmBytecodeCompiler { "${module.getModuleName()}-common", CommonPlatforms.defaultCommonPlatform, CommonPlatformAnalyzerServices, - commonSourcesScope + commonSourcesScope, + needRegisterJavaElementFinder = false ) } @@ -246,7 +249,8 @@ object FirKotlinToJvmBytecodeCompiler { module.getModuleName(), JvmPlatforms.unspecifiedJvmPlatform, JvmPlatformAnalyzerServices, - sourceScope + sourceScope, + needRegisterJavaElementFinder = true ) { if (commonSession != null) { sourceDependsOnDependencies(listOf(commonSession.moduleData)) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt index bdac4236101..86d3aeaf973 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt @@ -85,6 +85,7 @@ object FirSessionFactory { lookupTracker: LookupTracker?, providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?, extensionRegistrars: List, + needRegisterJavaElementFinder: Boolean, dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {}, noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {}, ): FirSession { @@ -117,6 +118,7 @@ object FirSessionFactory { extensionRegistrars, languageVersionSettings = languageVersionSettings, lookupTracker = lookupTracker, + needRegisterJavaElementFinder, init = sessionConfigurator ) } @@ -130,6 +132,7 @@ object FirSessionFactory { extensionRegistrars: List, languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT, lookupTracker: LookupTracker? = null, + needRegisterJavaElementFinder: Boolean, init: FirSessionConfigurator.() -> Unit = {} ): FirSession { return FirCliSession(sessionProvider, FirSession.Kind.Source).apply session@{ @@ -191,8 +194,9 @@ object FirSessionFactory { FirDependenciesSymbolProvider::class, dependenciesSymbolProvider ) - - projectEnvironment.registerAsJavaElementFinder(this) + if (needRegisterJavaElementFinder) { + projectEnvironment.registerAsJavaElementFinder(this) + } } } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt index eb10a1fa49c..a70b7e84c83 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt @@ -93,6 +93,7 @@ class FirFrontendFacade( lookupTracker = null, providerAndScopeForIncrementalCompilation = null, extensionRegistrars = FirExtensionRegistrar.getInstances(project), + needRegisterJavaElementFinder = true, dependenciesConfigurator = { dependencies(configuration.jvmModularRoots.map { it.toPath() }) dependencies(configuration.jvmClasspathRoots.map { it.toPath() }) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt index 13fb6239f13..7ea4432900e 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -98,7 +98,8 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { librariesScope = PsiBasedProjectFileSearchScope(allProjectScope), lookupTracker = null, providerAndScopeForIncrementalCompilation = null, - extensionRegistrars = emptyList() + extensionRegistrars = emptyList(), + needRegisterJavaElementFinder = true ) { configureSession() getFirExtensions()?.let { diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt index 5e6e4b79266..e33f6fdf5bb 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt @@ -43,6 +43,7 @@ fun createSessionForTests( lookupTracker = null, providerAndScopeForIncrementalCompilation = null, extensionRegistrars = emptyList(), + needRegisterJavaElementFinder = true, dependenciesConfigurator = { friendDependencies(friendsPaths) } @@ -69,6 +70,7 @@ fun createSessionForTests( lookupTracker = null, providerAndScopeForIncrementalCompilation = null, extensionRegistrars = emptyList(), + needRegisterJavaElementFinder = true, dependenciesConfigurator = { friendDependencies(friendsPaths) }