[KLIB Resolver] Don't discriminate KLIBs by duplicated unique_name in K2 metadata compiler

Use the same approach as in K1 metadata compiler: resolve each library
separately from others, don't attempt to resolve them all at once.

^KT-63573
This commit is contained in:
Dmitriy Dolovov
2023-12-07 17:13:22 +01:00
committed by Space Team
parent 1c285de55e
commit b1093d8082
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.cli.metadata
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VirtualFileManager
import org.jetbrains.kotlin.analyzer.common.CommonPlatformAnalyzerServices
import org.jetbrains.kotlin.backend.common.CommonKLibResolver
import org.jetbrains.kotlin.cli.common.*
import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
import org.jetbrains.kotlin.cli.common.messages.toLogger
@@ -41,10 +40,13 @@ import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile
import org.jetbrains.kotlin.library.SerializedMetadata
import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
import org.jetbrains.kotlin.library.metadata.resolver.impl.KotlinResolvedLibraryImpl
import org.jetbrains.kotlin.library.resolveSingleFileKlib
import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.CommonPlatforms
import java.io.File
import org.jetbrains.kotlin.konan.file.File as KFile
internal class FirMetadataSerializer(
configuration: CompilerConfiguration,
@@ -78,7 +80,12 @@ internal class FirMetadataSerializer(
.filterIsInstance<JvmClasspathRoot>()
.filter { it.file.isDirectory || it.file.extension == "klib" }
.map { it.file.absolutePath }
val resolvedLibraries = CommonKLibResolver.resolve(klibFiles, messageCollector.toLogger()).getFullResolvedList()
val logger = messageCollector.toLogger()
// TODO: This is a workaround for KT-63573. Revert it back when KT-64169 is fixed.
// val resolvedLibraries = CommonKLibResolver.resolve(klibFiles, logger).getFullResolvedList()
val resolvedLibraries = klibFiles.map { KotlinResolvedLibraryImpl(resolveSingleFileKlib(KFile(it), logger)) }
val outputs = if (isLightTree) {
val projectEnvironment = environment.toAbstractProjectEnvironment() as VfsBasedProjectEnvironment