~ Throw an exception if multiple modules used for `-Xbuild-file`
KT-73784
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
index 847d5fe..9bfb3e0 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
@@ -145,6 +145,10 @@
val moduleChunk = configuration.configureModuleChunk(arguments, buildFile)
val chunk = moduleChunk.modules
+
+ // Report usage of `-Xbuild-file` with multiple modules in case of rollback to K1 just in case
+ messageCollector.reportUsageOfBuildFileWithMultipleModules(buildFile, moduleChunk)
+
configuration.configureSourceRoots(chunk, buildFile)
// should be called after configuring jdk home from build file
configuration.configureJdkClasspathRoots()
@@ -327,4 +331,12 @@
.let { names -> names.singleOrNull() ?: names.joinToString() }
}
+internal fun MessageCollector.reportUsageOfBuildFileWithMultipleModules(buildFile: File?, moduleChunk: ModuleChunk) {
+ if (buildFile != null && moduleChunk.modules.size > 1) {
+ // TODO: implement correct reporting instead of just throwing an exception
+ // report(INFO, "Multiple modules used for -Xbuild-file=${buildFile}: ${moduleChunk.modules.joinToString(", ")}")
+ throw Exception("Multiple modules used for -Xbuild-file=${buildFile}: ${moduleChunk.modules.joinToString(", ")}")
+ }
+}
+
fun main(args: Array<String>) = K2JVMCompiler.main(args)
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/jvm/JvmConfigurationPipelinePhase.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/jvm/JvmConfigurationPipelinePhase.kt
index 5ef769e..844035f 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/jvm/JvmConfigurationPipelinePhase.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/jvm/JvmConfigurationPipelinePhase.kt
@@ -8,7 +8,9 @@
import org.jetbrains.kotlin.backend.jvm.jvmPhases
import org.jetbrains.kotlin.cli.common.*
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.INFO
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.LOGGING
+import org.jetbrains.kotlin.cli.common.modules.ModuleChunk
import org.jetbrains.kotlin.cli.jvm.*
import org.jetbrains.kotlin.cli.jvm.compiler.applyModuleProperties
import org.jetbrains.kotlin.cli.jvm.compiler.configureSourceRoots
@@ -103,6 +105,9 @@
val buildFile = this.buildFile
val moduleChunk = configureModuleChunk(arguments, buildFile)
this.moduleChunk = moduleChunk
+
+ messageCollector.reportUsageOfBuildFileWithMultipleModules(buildFile, moduleChunk)
+
if (moduleChunk.modules.size == 1) {
applyModuleProperties(moduleChunk.modules.single(), buildFile)
}