[LL API] Fix `mainFile` calculation when computing compilation chunks

The current implementation messes up the order of files and might result
in incorrect `mainFile` value for a chunk.

^KT-71301: Fixed
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KaFirCompilerFacility.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KaFirCompilerFacility.kt
index eea76f0..fe57f6c 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KaFirCompilerFacility.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KaFirCompilerFacility.kt
@@ -386,18 +386,17 @@
              * Create a new multi-file dangling file module, containing copies of [files], with the specified [contextModule].
              */
             fun appendDanglingChunk(isMain: Boolean, contextModule: KaModule, files: List<KtFile>) {
-                val (codeFragments, ordinaryFiles) = files.partition { it is KtCodeFragment }
-                val newOrdinaryFiles = ordinaryFiles.map { createFileCopy(it, emptyMap()) }
 
-                val newCodeFragments = if (codeFragments.isNotEmpty()) {
-                    val ordinaryFileSubstitutions = ordinaryFiles.zip(newOrdinaryFiles).toMap()
-                    codeFragments.map { createFileCopy(it, ordinaryFileSubstitutions) }
-                } else {
-                    emptyList()
+                val ordinaryFileToNewFile = files.filter { it !is KtCodeFragment }.associateWith { createFileCopy(it, emptyMap()) }
+
+                val newFiles = files.map {
+                    if (it is KtCodeFragment) {
+                        createFileCopy(it, ordinaryFileToNewFile)
+                    } else {
+                        ordinaryFileToNewFile[it]!!
+                    }
                 }
 
-                val newFiles = newOrdinaryFiles + newCodeFragments
-
                 val mainFile = if (isMain) {
                     val mainFileIndex = files.indexOf(originalMainFile)
                     check(mainFileIndex >= 0) { "Main file is not submitted" }
@@ -409,7 +408,7 @@
                 val newModule = KaDanglingFileModuleImpl(newFiles, contextModule, KaDanglingFileResolutionMode.PREFER_SELF)
                 newFiles.forEach { it.explicitModule = newModule }
 
-                val chunk = ChunkToCompile(mainFile, codeFragments.isNotEmpty(), createFilesToCompile(newFiles))
+                val chunk = ChunkToCompile(mainFile, newFiles.any { it is KtCodeFragment }, createFilesToCompile(newFiles))
                 result[newModule] = chunk
             }