diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index b55582fdec7..46aced6c40a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -57,7 +57,6 @@ import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers -import org.jetbrains.kotlin.fir.createSessionWithDependencies import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries import org.jetbrains.kotlin.javac.JavacWrapper @@ -339,7 +338,7 @@ object KotlinToJVMBytecodeCompiler { val librariesScope = ProjectScope.getLibrariesScope(project) val languageVersionSettings = moduleConfiguration.languageVersionSettings - val session = createSessionWithDependencies( + val session = FirSessionFactory.createSessionWithDependencies( Name.identifier(module.getModuleName()), JvmPlatforms.unspecifiedJvmPlatform, JvmPlatformAnalyzerServices, 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 dbbb04340d8..ba81ea87401 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 @@ -74,6 +74,52 @@ object FirSessionFactory { val scope: GlobalSearchScope ) + inline fun createSessionWithDependencies( + moduleName: Name, + platform: TargetPlatform, + analyzerServices: PlatformDependentAnalyzerServices, + externalSessionProvider: FirProjectSessionProvider?, + project: Project, + languageVersionSettings: LanguageVersionSettings, + sourceScope: GlobalSearchScope, + librariesScope: GlobalSearchScope, + lookupTracker: LookupTracker?, + getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, + getProviderAndScopeForIncrementalCompilation: () -> ProviderAndScopeForIncrementalCompilation?, + dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {}, + noinline sessionConfigurator: FirSessionConfigurator.() -> Unit = {}, + ): FirSession { + val dependencyList = DependencyListForCliModule.build(moduleName, platform, analyzerServices, dependenciesConfigurator) + val sessionProvider = externalSessionProvider ?: FirProjectSessionProvider() + createLibrarySession( + moduleName, + sessionProvider, + dependencyList.moduleDataProvider, + librariesScope, + project, + getPackagePartProvider(librariesScope) + ) + + val mainModuleData = FirModuleDataImpl( + moduleName, + dependencyList.regularDependencies, + dependencyList.dependsOnDependencies, + dependencyList.friendsDependencies, + dependencyList.platform, + dependencyList.analyzerServices + ) + return createJavaModuleBasedSession( + mainModuleData, + sessionProvider, + sourceScope, + project, + providerAndScopeForIncrementalCompilation = getProviderAndScopeForIncrementalCompilation(), + languageVersionSettings = languageVersionSettings, + lookupTracker = lookupTracker, + init = sessionConfigurator + ) + } + fun createJavaModuleBasedSession( moduleData: FirModuleData, sessionProvider: FirProjectSessionProvider, diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/sessionCreationUtils.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/sessionCreationUtils.kt deleted file mode 100644 index 9ce2af39bb9..00000000000 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/sessionCreationUtils.kt +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir - -import com.intellij.openapi.project.Project -import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider -import org.jetbrains.kotlin.fir.session.FirSessionFactory -import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.load.kotlin.PackagePartProvider -import org.jetbrains.kotlin.modules.Module -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.platform.TargetPlatform -import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices - -@OptIn(PrivateForInline::class) -inline fun createSessionWithDependencies( - name: Name, - platform: TargetPlatform, - analyzerServices: PlatformDependentAnalyzerServices, - externalSessionProvider: FirProjectSessionProvider?, - project: Project, - languageVersionSettings: LanguageVersionSettings, - sourceScope: GlobalSearchScope, - librariesScope: GlobalSearchScope, - lookupTracker: LookupTracker?, - getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - getProviderAndScopeForIncrementalCompilation: () -> FirSessionFactory.ProviderAndScopeForIncrementalCompilation?, - dependenciesConfigurator: DependencyListForCliModule.Builder.() -> Unit = {}, - noinline sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit = {}, -): FirSession { - val dependencyList = DependencyListForCliModule.build(name, platform, analyzerServices, dependenciesConfigurator) - return createSessionWithDependenciesImpl( - name, - dependencyList, - externalSessionProvider, - project, - languageVersionSettings, - sourceScope, - librariesScope, - lookupTracker, - getPackagePartProvider, - getProviderAndScopeForIncrementalCompilation, - sessionConfigurator - ) -} - -@OptIn(PrivateForInline::class) -inline fun createSessionWithDependencies( - module: Module, - platform: TargetPlatform, - analyzerServices: PlatformDependentAnalyzerServices, - externalSessionProvider: FirProjectSessionProvider?, - project: Project, - languageVersionSettings: LanguageVersionSettings, - sourceScope: GlobalSearchScope, - librariesScope: GlobalSearchScope, - lookupTracker: LookupTracker?, - getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - getProviderAndScopeForIncrementalCompilation: () -> FirSessionFactory.ProviderAndScopeForIncrementalCompilation?, - noinline sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit = {}, -): FirSession { - val moduleName = Name.identifier(module.getModuleName()) - val dependencyList = DependencyListForCliModule.build( - moduleName, - platform, - analyzerServices - ) { - friendDependencies(module.getFriendPaths()) - dependencies(module.getClasspathRoots()) - } - return createSessionWithDependenciesImpl( - moduleName, - dependencyList, - externalSessionProvider, - project, - languageVersionSettings, - sourceScope, - librariesScope, - lookupTracker, - getPackagePartProvider, - getProviderAndScopeForIncrementalCompilation, - sessionConfigurator - ) -} - -@PrivateForInline -inline fun createSessionWithDependenciesImpl( - moduleName: Name, - dependencyListForCliModule: DependencyListForCliModule, - externalSessionProvider: FirProjectSessionProvider?, - project: Project, - languageVersionSettings: LanguageVersionSettings, - sourceScope: GlobalSearchScope, - librariesScope: GlobalSearchScope, - lookupTracker: LookupTracker?, - getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, - getProviderAndScopeForIncrementalCompilation: () -> FirSessionFactory.ProviderAndScopeForIncrementalCompilation?, - noinline sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit, -): FirSession { - val sessionProvider = externalSessionProvider ?: FirProjectSessionProvider() - FirSessionFactory.createLibrarySession( - moduleName, - sessionProvider, - dependencyListForCliModule.moduleDataProvider, - librariesScope, - project, - getPackagePartProvider(librariesScope) - ) - - val mainModuleData = FirModuleDataImpl( - moduleName, - dependencyListForCliModule.regularDependencies, - dependencyListForCliModule.dependsOnDependencies, - dependencyListForCliModule.friendsDependencies, - dependencyListForCliModule.platform, - dependencyListForCliModule.analyzerServices - ) - return FirSessionFactory.createJavaModuleBasedSession( - mainModuleData, - sessionProvider, - sourceScope, - project, - providerAndScopeForIncrementalCompilation = getProviderAndScopeForIncrementalCompilation(), - 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 17f19c04321..07e492d53be 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 @@ -15,8 +15,8 @@ import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers -import org.jetbrains.kotlin.fir.createSessionWithDependencies import org.jetbrains.kotlin.fir.moduleData +import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform @@ -66,7 +66,7 @@ class FirFrontendFacade( val librariesScope = ProjectScope.getLibrariesScope(project) val sourcesScope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, ktFiles) - val session = createSessionWithDependencies( + val session = FirSessionFactory.createSessionWithDependencies( Name.identifier(module.name), module.targetPlatform, module.targetPlatform.getAnalyzerServices(), 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 b987d5ec5d4..c2afe637305 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -80,7 +80,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { val scope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope( project, moduleFiles.mapNotNull { it.ktFile }) - createSessionWithDependencies( + FirSessionFactory.createSessionWithDependencies( Name.identifier(info.name.asString().removeSurrounding("<", ">")), info.platform, info.analyzerServices, 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 35ea55df57b..557280eba5c 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 @@ -10,6 +10,7 @@ import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl +import org.jetbrains.kotlin.fir.session.FirSessionFactory import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.jvm.JvmPlatforms @@ -41,7 +42,7 @@ fun createSessionForTests( friendsPaths: List = emptyList(), getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider, ): FirSession { - return createSessionWithDependencies( + return FirSessionFactory.createSessionWithDependencies( Name.identifier(moduleName), JvmPlatforms.unspecifiedJvmPlatform, JvmPlatformAnalyzerServices,