diff --git a/libraries/kotlinx-metadata/klib/build.gradle.kts b/libraries/kotlinx-metadata/klib/build.gradle.kts index 6d769026c27..57401630a2d 100644 --- a/libraries/kotlinx-metadata/klib/build.gradle.kts +++ b/libraries/kotlinx-metadata/klib/build.gradle.kts @@ -31,6 +31,7 @@ dependencies { // TODO: Get rid of this heavyweight dependency. shadows(project(":core:descriptors")) shadows(project(":core:metadata")) + shadows(project(":core:deserialization")) shadows(project(":compiler:serialization")) shadows(project(":kotlin-util-klib-metadata")) shadows(project(":kotlin-util-klib")) diff --git a/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/KlibModuleMetadata.kt b/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/KlibModuleMetadata.kt index b0f1a7d6c71..2dd76f0bb15 100644 --- a/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/KlibModuleMetadata.kt +++ b/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/KlibModuleMetadata.kt @@ -83,12 +83,13 @@ class KlibModuleMetadata( readStrategy: KlibModuleFragmentReadStrategy = KlibModuleFragmentReadStrategy.DEFAULT ): KlibModuleMetadata { val moduleHeaderProto = parseModuleHeader(library.moduleHeaderData) - val nameResolver = NameResolverImpl(moduleHeaderProto.strings, moduleHeaderProto.qualifiedNames) - val moduleHeader = moduleHeaderProto.readHeader(nameResolver) + val headerNameResolver = NameResolverImpl(moduleHeaderProto.strings, moduleHeaderProto.qualifiedNames) + val moduleHeader = moduleHeaderProto.readHeader(headerNameResolver) val fileIndex = SourceFileIndexReadExtension(moduleHeader.file) val moduleFragments = moduleHeader.packageFragmentName.flatMap { packageFqName -> library.packageMetadataParts(packageFqName).map { part -> val packageFragment = parsePackageFragment(library.packageMetadata(packageFqName, part)) + val nameResolver = NameResolverImpl(packageFragment.strings, packageFragment.qualifiedNames) KmModuleFragment().apply { packageFragment.accept(this, nameResolver, listOf(fileIndex)) } }.let(readStrategy::processModuleParts) } diff --git a/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/impl/klibMetadataExtensions.kt b/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/impl/klibMetadataExtensions.kt index 0fdbde0dde7..76deea0b3a7 100644 --- a/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/impl/klibMetadataExtensions.kt +++ b/libraries/kotlinx-metadata/klib/src/kotlinx/metadata/klib/impl/klibMetadataExtensions.kt @@ -20,10 +20,10 @@ import org.jetbrains.kotlin.serialization.StringTableImpl internal class KlibMetadataExtensions : MetadataExtensions { private fun ReadContext.getSourceFile(index: Int) = - contextExtensions.filterIsInstance().first().getSourceFile(index) + strings.getString(index).let(::KlibSourceFile) private fun WriteContext.getIndexOf(file: KlibSourceFile) = - contextExtensions.filterIsInstance().first().getIndexOf(file) + strings.getStringIndex(file.name) override fun readClassExtensions(v: KmClassVisitor, proto: ProtoBuf.Class, c: ReadContext) { val extension = v.visitExtensions(KlibClassExtensionVisitor.TYPE) as? KlibClassExtensionVisitor ?: return