[FIR] Support reading optIn annotations from module dump in MT and FP tests
This commit is contained in:
committed by
TeamCityServer
parent
1265dda880
commit
938baa5cfe
+1
@@ -145,6 +145,7 @@ abstract class AbstractFullPipelineModularizedTest : AbstractModularizedTest() {
|
||||
args.freeArgs = moduleData.sources.map { it.absolutePath }
|
||||
args.destination = tmp.toAbsolutePath().toFile().toString()
|
||||
args.friendPaths = moduleData.friendDirs.map { it.canonicalPath }.toTypedArray()
|
||||
args.optIn = moduleData.optInAnnotations.toTypedArray()
|
||||
}
|
||||
|
||||
private fun configureArgsUsingBuildFile(args: K2JVMCompilerArguments, moduleData: ModuleData, tmp: Path) {
|
||||
|
||||
+12
-3
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
|
||||
import org.jetbrains.kotlin.cli.common.setupLanguageVersionSettings
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||
@@ -31,6 +31,7 @@ data class ModuleData(
|
||||
val rawSources: List<String>,
|
||||
val rawJavaSourceRoots: List<JavaSourceRootData<String>>,
|
||||
val rawFriendDirs: List<String>,
|
||||
val optInAnnotations: List<String>,
|
||||
val rawModularJdkRoot: String?,
|
||||
val rawJdkHome: String?,
|
||||
val isCommon: Boolean
|
||||
@@ -99,6 +100,11 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
||||
configuration.addJavaSourceRoot(it.path, it.packagePrefix)
|
||||
}
|
||||
configuration.addJvmClasspathRoots(moduleData.classpath)
|
||||
configuration.languageVersionSettings = LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST_STABLE,
|
||||
ApiVersion.LATEST_STABLE,
|
||||
analysisFlags = mutableMapOf(AnalysisFlags.optIn to moduleData.optInAnnotations)
|
||||
)
|
||||
|
||||
// in case of modular jdk only
|
||||
configuration.putIfNotNull(JVMConfigurationKeys.JDK_HOME, moduleData.modularJdkRoot)
|
||||
@@ -124,6 +130,7 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
||||
val classpath = mutableListOf<String>()
|
||||
val sources = mutableListOf<String>()
|
||||
val friendDirs = mutableListOf<String>()
|
||||
val optInAnnotations = mutableListOf<String>()
|
||||
val timestamp = moduleElement.attributes.getNamedItem("timestamp")?.nodeValue?.toLong() ?: 0
|
||||
val jdkHome = moduleElement.attributes.getNamedItem("jdkHome")?.nodeValue
|
||||
var modularJdkRoot: String? = null
|
||||
@@ -153,6 +160,7 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
||||
"sources" -> sources += item.attributes.getNamedItem("path").nodeValue
|
||||
"commonSources" -> isCommon = true
|
||||
"modularJdkRoot" -> modularJdkRoot = item.attributes.getNamedItem("path").nodeValue
|
||||
"useOptIn" -> optInAnnotations += item.attributes.getNamedItem("annotation").nodeValue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,9 +173,10 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
||||
sources,
|
||||
javaSourceRoots,
|
||||
friendDirs,
|
||||
optInAnnotations,
|
||||
modularJdkRoot,
|
||||
jdkHome,
|
||||
isCommon
|
||||
isCommon,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ObsoleteTestInfrastructure
|
||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||
import org.jetbrains.kotlin.cli.common.toBooleanLenient
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.*
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector
|
||||
import org.jetbrains.kotlin.fir.analysis.collectors.FirDiagnosticsCollector
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||
@@ -133,7 +134,8 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
scope.toAbstractProjectFileSearchScope(),
|
||||
librariesScope.toAbstractProjectFileSearchScope(),
|
||||
moduleData.qualifiedName,
|
||||
moduleData.friendDirs.map { it.toPath() }
|
||||
moduleData.friendDirs.map { it.toPath() },
|
||||
environment.configuration.languageVersionSettings
|
||||
)
|
||||
val scopeSession = ScopeSession()
|
||||
val processors = createAllCompilerResolveProcessors(session, scopeSession).let {
|
||||
|
||||
+2
-1
@@ -82,7 +82,8 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
LanguageFeature.NewInference to if (USE_NI) LanguageFeature.State.ENABLED else LanguageFeature.State.DISABLED
|
||||
),
|
||||
analysisFlags = mapOf(
|
||||
AnalysisFlags.skipPrereleaseCheck to true
|
||||
AnalysisFlags.skipPrereleaseCheck to true,
|
||||
AnalysisFlags.optIn to moduleData.optInAnnotations
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.ObsoleteTestInfrastructure
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.PsiBasedProjectEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.PsiBasedProjectFileSearchScope
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
||||
@@ -29,13 +30,14 @@ fun createSessionForTests(
|
||||
librariesScope: AbstractProjectFileSearchScope = !sourceScope,
|
||||
moduleName: String = "TestModule",
|
||||
friendsPaths: List<Path> = emptyList(),
|
||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT
|
||||
): FirSession = FirSessionFactory.createSessionWithDependencies(
|
||||
Name.identifier(moduleName),
|
||||
JvmPlatforms.unspecifiedJvmPlatform,
|
||||
JvmPlatformAnalyzerServices,
|
||||
externalSessionProvider = null,
|
||||
projectEnvironment,
|
||||
languageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
languageVersionSettings,
|
||||
sourceScope,
|
||||
librariesScope,
|
||||
lookupTracker = null,
|
||||
|
||||
Reference in New Issue
Block a user