diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt index b44fc1b4042..4357c5cf180 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt @@ -65,7 +65,6 @@ import org.jetbrains.kotlin.resolve.TopDownAnalysisMode import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory -import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.test.directives.ConfigurationDirectives @@ -426,8 +425,8 @@ class ClassicFrontendFacade( compilerEnvironment, dependenciesContainer = CommonDependenciesContainerImpl(moduleDescriptor) ) { - // TODO - MetadataPartProvider.Empty + val factory = testServices.compilerConfigurationProvider.getPackagePartProviderFactory(module) + factory(it.moduleContentScope) } } 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 9bf4d933a33..abacc5b3cdb 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 @@ -17,19 +17,19 @@ import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.config.LanguageFeature +import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.container.topologicalSort import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider +import org.jetbrains.kotlin.fir.session.FirCommonSessionFactory import org.jetbrains.kotlin.fir.session.FirJvmSessionFactory import org.jetbrains.kotlin.fir.session.FirNativeSessionFactory import org.jetbrains.kotlin.fir.session.FirSessionConfigurator import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment +import org.jetbrains.kotlin.load.kotlin.PackageAndMetadataPartProvider import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.isCommon @@ -191,9 +191,9 @@ open class FirFrontendFacade( val compilerConfigurationProvider = testServices.compilerConfigurationProvider val projectEnvironment: AbstractProjectEnvironment? val languageVersionSettings = module.languageVersionSettings + val isCommon = module.targetPlatform.isCommon() when { - // TODO: use common session for common target platform when it's implemented - module.targetPlatform.isCommon() || module.targetPlatform.isJvm() -> { + isCommon || module.targetPlatform.isJvm() -> { val packagePartProviderFactory = compilerConfigurationProvider.getPackagePartProviderFactory(module) projectEnvironment = VfsBasedProjectEnvironment( project, VirtualFileManager.getInstance().getFileSystem(StandardFileSystems.FILE_PROTOCOL), @@ -201,17 +201,32 @@ open class FirFrontendFacade( val projectFileSearchScope = PsiBasedProjectFileSearchScope(ProjectScope.getLibrariesScope(project)) val packagePartProvider = projectEnvironment.getPackagePartProvider(projectFileSearchScope) - FirJvmSessionFactory.createLibrarySession( - moduleName, - sessionProvider, - moduleDataProvider, - projectEnvironment, - extensionRegistrars, - projectFileSearchScope, - packagePartProvider, - languageVersionSettings, - registerExtraComponents = ::registerExtraComponents, - ) + if (isCommon) { + FirCommonSessionFactory.createLibrarySession( + mainModuleName = moduleName, + sessionProvider = sessionProvider, + moduleDataProvider = moduleDataProvider, + projectEnvironment = projectEnvironment, + extensionRegistrars = extensionRegistrars, + librariesScope = projectFileSearchScope, + resolvedKLibs = emptyList(), + packageAndMetadataPartProvider = packagePartProvider as PackageAndMetadataPartProvider, + languageVersionSettings = languageVersionSettings, + registerExtraComponents = ::registerExtraComponents + ) + } else { + FirJvmSessionFactory.createLibrarySession( + moduleName, + sessionProvider, + moduleDataProvider, + projectEnvironment, + extensionRegistrars, + projectFileSearchScope, + packagePartProvider, + languageVersionSettings, + registerExtraComponents = ::registerExtraComponents, + ) + } } module.targetPlatform.isJs() -> { projectEnvironment = null @@ -318,8 +333,19 @@ open class FirFrontendFacade( ): FirSession { val languageVersionSettings = module.languageVersionSettings return when { - // TODO: use common session for common target platform when it's implemented - targetPlatform.isCommon() || targetPlatform.isJvm() -> { + targetPlatform.isCommon() -> { + FirCommonSessionFactory.createModuleBasedSession( + moduleData = moduleData, + sessionProvider = sessionProvider, + projectEnvironment = projectEnvironment!!, + incrementalCompilationContext = null, + extensionRegistrars = extensionRegistrars, + languageVersionSettings = languageVersionSettings, + registerExtraComponents = ::registerExtraComponents, + init = sessionConfigurator, + ) + } + targetPlatform.isJvm() -> { FirJvmSessionFactory.createModuleBasedSession( moduleData, sessionProvider, @@ -328,11 +354,9 @@ open class FirFrontendFacade( incrementalCompilationContext = null, extensionRegistrars, languageVersionSettings, - lookupTracker = null, - enumWhenTracker = null, needRegisterJavaElementFinder = true, registerExtraComponents = ::registerExtraComponents, - sessionConfigurator, + init = sessionConfigurator, ) } targetPlatform.isJs() -> { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/CommonEnvironmentConfigurator.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/CommonEnvironmentConfigurator.kt index f11cfdc141e..c358c8e0b50 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/CommonEnvironmentConfigurator.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/CommonEnvironmentConfigurator.kt @@ -5,12 +5,17 @@ package org.jetbrains.kotlin.test.services.configuration +import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys +import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot +import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.config.AnalysisFlag import org.jetbrains.kotlin.config.AnalysisFlags.allowFullyQualifiedNameInKClass import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfigurationKey import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.test.directives.ConfigurationDirectives +import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives import org.jetbrains.kotlin.test.model.TestModule @@ -37,5 +42,14 @@ class CommonEnvironmentConfigurator(testServices: TestServices) : EnvironmentCon @Suppress("UNCHECKED_CAST") configuration.put(key as CompilerConfigurationKey, value) } + + if (module.targetPlatform in CommonPlatforms.allDefaultTargetPlatforms) { + if (WITH_STDLIB in module.directives) { + configuration.add( + CLIConfigurationKeys.CONTENT_ROOTS, + JvmClasspathRoot(ForTestCompileRuntime.stdlibCommonForTests()) + ) + } + } } }