[FIR MT] Add reading of packagePrefix from model of java roots

This commit is contained in:
Simon Ogorodnik
2021-07-29 18:57:09 +03:00
committed by teamcityserver
parent 97bfc49ed6
commit a7961a4a45
2 changed files with 17 additions and 11 deletions
@@ -127,7 +127,7 @@ abstract class AbstractFullPipelineModularizedTest : AbstractModularizedTest() {
args.reportPerf = true
args.jvmTarget = "1.8"
args.classpath = moduleData.classpath.joinToString(separator = ":") { it.absolutePath }
args.javaSourceRoots = moduleData.javaSourceRoots.map { it.absolutePath }.toTypedArray()
args.javaSourceRoots = moduleData.javaSourceRoots.map { it.path.absolutePath }.toTypedArray()
args.allowKotlinPackage = true
args.freeArgs = moduleData.sources.map { it.absolutePath }
args.destination = tmp.toAbsolutePath().toFile().toString()
@@ -7,9 +7,8 @@ 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.jvm.config.addJavaSourceRoots
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
@@ -30,7 +29,7 @@ data class ModuleData(
val qualifier: String,
val rawClasspath: List<String>,
val rawSources: List<String>,
val rawJavaSourceRoots: List<String>,
val rawJavaSourceRoots: List<JavaSourceRootData<String>>,
val rawFriendDirs: List<String>,
val rawModularJdkRoot: String?,
val isCommon: Boolean
@@ -40,11 +39,13 @@ data class ModuleData(
val outputDir = rawOutputDir.fixPath()
val classpath = rawClasspath.map { it.fixPath() }
val sources = rawSources.map { it.fixPath() }
val javaSourceRoots = rawJavaSourceRoots.map { it.fixPath() }
val javaSourceRoots = rawJavaSourceRoots.map { JavaSourceRootData(it.path.fixPath(), it.packagePrefix) }
val friendDirs = rawFriendDirs.map { it.fixPath() }
val modularJdkRoot = rawModularJdkRoot?.fixPath()
}
data class JavaSourceRootData<Path : Any>(val path: Path, val packagePrefix: String?)
private fun String.fixPath(): File = File(ROOT_PATH_PREFIX, this.removePrefix("/"))
private fun NodeList.toList(): List<Node> {
@@ -92,12 +93,11 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
fun createDefaultConfiguration(moduleData: ModuleData): CompilerConfiguration {
val configuration = KotlinTestUtils.newConfiguration()
configuration.addJavaSourceRoots(moduleData.javaSourceRoots)
moduleData.javaSourceRoots.forEach {
configuration.addJavaSourceRoot(it.path, it.packagePrefix)
}
configuration.addJvmClasspathRoots(moduleData.classpath)
// ignored for modular jdks
configuration.put(JVMConfigurationKeys.NO_JDK, true)
// in case of modular jdk only
configuration.putIfNotNull(JVMConfigurationKeys.JDK_HOME, moduleData.modularJdkRoot)
@@ -118,7 +118,7 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
val moduleName = moduleElement.attributes.getNamedItem("name").nodeValue
val outputDir = moduleElement.attributes.getNamedItem("outputDir").nodeValue
val moduleNameQualifier = outputDir.substringAfterLast("/")
val javaSourceRoots = mutableListOf<String>()
val javaSourceRoots = mutableListOf<JavaSourceRootData<String>>()
val classpath = mutableListOf<String>()
val sources = mutableListOf<String>()
val friendDirs = mutableListOf<String>()
@@ -140,7 +140,13 @@ abstract class AbstractModularizedTest : KtUsefulTestCase() {
val path = item.attributes.getNamedItem("path").nodeValue
friendDirs += path
}
"javaSourceRoots" -> javaSourceRoots += item.attributes.getNamedItem("path").nodeValue
"javaSourceRoots" -> {
javaSourceRoots +=
JavaSourceRootData(
item.attributes.getNamedItem("path").nodeValue,
item.attributes.getNamedItem("packagePrefix")?.nodeValue,
)
}
"sources" -> sources += item.attributes.getNamedItem("path").nodeValue
"commonSources" -> isCommon = true
"modularJdkRoot" -> modularJdkRoot = item.attributes.getNamedItem("path").nodeValue