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