[Tests] Fix stdlib in common diagnostic tests modules

This commit is contained in:
Kirill Rakhman
2023-04-03 13:09:27 +02:00
committed by Space Team
parent 09474758ab
commit e93628d0e6
3 changed files with 61 additions and 24 deletions
@@ -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)
}
}
@@ -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() -> {
@@ -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<Any>, value)
}
if (module.targetPlatform in CommonPlatforms.allDefaultTargetPlatforms) {
if (WITH_STDLIB in module.directives) {
configuration.add(
CLIConfigurationKeys.CONTENT_ROOTS,
JvmClasspathRoot(ForTestCompileRuntime.stdlibCommonForTests())
)
}
}
}
}