From 6e4cc49f1d62ccb450392ff157e81322c5c3942b Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 19 May 2021 16:28:56 +0300 Subject: [PATCH] [FIR] Cleanup IC provider creation in FirSessionFactory --- .../compiler/FirKotlinToJvmBytecodeCompiler.kt | 18 ++++++++++-------- .../kotlin/fir/session/FirSessionFactory.kt | 4 ++-- .../test/frontend/fir/FirFrontendFacade.kt | 2 +- .../fir/AbstractFirBaseDiagnosticsTest.kt | 2 +- .../jetbrains/kotlin/fir/SessionTestUtils.kt | 2 +- 5 files changed, 15 insertions(+), 13 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 23e978cee69..86a7763edc2 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 @@ -90,6 +90,15 @@ object FirKotlinToJvmBytecodeCompiler { val librariesScope = ProjectScope.getLibrariesScope(project) + val providerAndScopeForIncrementalCompilation = run { + if (targetIds == null || incrementalComponents == null) return@run null + val packagePartProvider = IncrementalPackagePartProvider( + environment.createPackagePartProvider(sourceScope), + targetIds.map(incrementalComponents::getIncrementalCache) + ) + FirSessionFactory.ProviderAndScopeForIncrementalCompilation(packagePartProvider, librariesScope) + } + val languageVersionSettings = moduleConfiguration.languageVersionSettings val session = createSessionWithDependencies( Name.identifier(module.getModuleName()), @@ -101,15 +110,8 @@ object FirKotlinToJvmBytecodeCompiler { sourceScope, librariesScope, lookupTracker = environment.configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER), + providerAndScopeForIncrementalCompilation, getPackagePartProvider = { environment.createPackagePartProvider(it) }, - getProviderAndScopeForIncrementalCompilation = get@{ - if (targetIds == null || incrementalComponents == null) return@get null - val packagePartProvider = IncrementalPackagePartProvider( - environment.createPackagePartProvider(sourceScope), - targetIds.map(incrementalComponents::getIncrementalCache) - ) - FirSessionFactory.ProviderAndScopeForIncrementalCompilation(packagePartProvider, librariesScope) - }, dependenciesConfigurator = { dependencies(moduleConfiguration.jvmClasspathRoots.map { it.toPath() }) friendDependencies(moduleConfiguration[JVMConfigurationKeys.FRIEND_PATHS] ?: emptyList()) 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 ba81ea87401..6a835a8229a 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 @@ -84,8 +84,8 @@ object FirSessionFactory { sourceScope: GlobalSearchScope, librariesScope: GlobalSearchScope, lookupTracker: LookupTracker?, + providerAndScopeForIncrementalCompilation: ProviderAndScopeForIncrementalCompilation?, getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - getProviderAndScopeForIncrementalCompilation: () -> ProviderAndScopeForIncrementalCompilation?, dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {}, noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {}, ): FirSession { @@ -113,7 +113,7 @@ object FirSessionFactory { sessionProvider, sourceScope, project, - providerAndScopeForIncrementalCompilation = getProviderAndScopeForIncrementalCompilation(), + providerAndScopeForIncrementalCompilation, languageVersionSettings = languageVersionSettings, lookupTracker = lookupTracker, init = sessionConfigurator 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 07e492d53be..b93c10ca67b 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 @@ -76,8 +76,8 @@ class FirFrontendFacade( sourcesScope, librariesScope, lookupTracker = null, + providerAndScopeForIncrementalCompilation = null, getPackagePartProvider = packagePartProviderFactory, - getProviderAndScopeForIncrementalCompilation = { null }, 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 c2afe637305..e684a3f9b31 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -90,8 +90,8 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { sourceScope = scope, librariesScope = allProjectScope, lookupTracker = null, + providerAndScopeForIncrementalCompilation = null, getPackagePartProvider = { environment.createPackagePartProvider(it) }, - getProviderAndScopeForIncrementalCompilation = { null }, ) { 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 557280eba5c..e53ae8192ba 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 @@ -52,8 +52,8 @@ fun createSessionForTests( sourceScope, librariesScope, lookupTracker = null, + providerAndScopeForIncrementalCompilation = null, getPackagePartProvider, - getProviderAndScopeForIncrementalCompilation = { null }, dependenciesConfigurator = { friendDependencies(friendsPaths) }