~ 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)
         }