[FP] Pass module data to compiler via build file

This commit is contained in:
Simon Ogorodnik
2021-07-29 19:28:51 +03:00
committed by Dmitriy Novozhilov
parent 020b6e9dd1
commit 4a75222491
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.build.JvmSourceRoot
import org.jetbrains.kotlin.cli.common.*
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
@@ -14,6 +15,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder
import org.jetbrains.kotlin.util.PerformanceCounter
import java.io.FileOutputStream
import java.io.PrintStream
@@ -124,14 +126,27 @@ abstract class AbstractFullPipelineModularizedTest : AbstractModularizedTest() {
}
private fun configureBaseArguments(args: K2JVMCompilerArguments, moduleData: ModuleData, tmp: Path) {
val builder = KotlinModuleXmlBuilder()
builder.addModule(
moduleData.name,
tmp.toAbsolutePath().toFile().toString(),
sourceFiles = moduleData.sources,
javaSourceRoots = moduleData.javaSourceRoots.map { JvmSourceRoot(it.path, it.packagePrefix) },
classpathRoots = moduleData.classpath,
commonSourceFiles = emptyList(),
modularJdkRoot = moduleData.modularJdkRoot,
"java-production",
isTests = false,
emptySet(),
friendDirs = moduleData.friendDirs
)
val modulesFile = tmp.toFile().resolve("modules.xml")
modulesFile.writeText(builder.asText().toString())
args.reportPerf = true
args.jvmTarget = "1.8"
args.classpath = moduleData.classpath.joinToString(separator = ":") { it.absolutePath }
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()
args.friendPaths = moduleData.friendDirs.map { it.canonicalPath }.toTypedArray()
args.buildFile = modulesFile.absolutePath
}
abstract fun configureArguments(args: K2JVMCompilerArguments, moduleData: ModuleData)