diff --git a/compiler/fir/fir-deserialization/build.gradle.kts b/compiler/fir/fir-deserialization/build.gradle.kts index fff90062a69..cfd06c8a59d 100644 --- a/compiler/fir/fir-deserialization/build.gradle.kts +++ b/compiler/fir/fir-deserialization/build.gradle.kts @@ -5,7 +5,6 @@ plugins { dependencies { implementation(project(":core:metadata")) - implementation(project(":core:metadata.jvm")) implementation(project(":core:deserialization.common")) implementation(project(":core:compiler.common")) diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index ee0dd73fd94..95eda35e7e0 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -34,7 +34,6 @@ import org.jetbrains.kotlin.fir.types.toLookupTag import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.SerializationPluginMetadataExtensions import org.jetbrains.kotlin.metadata.deserialization.* -import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name @@ -232,8 +231,8 @@ fun deserializeClassToSymbol( replaceDeprecationsProvider(getDeprecationsProvider(session)) - classProto.getExtensionOrNull(JvmProtoBuf.classModuleName)?.let { idx -> - moduleName = nameResolver.getString(idx) + session.deserializationExtension?.loadModuleName(classProto, nameResolver)?.let { + moduleName = it } if (!Flags.HAS_ENUM_ENTRIES.get(flags)) { diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirDeserializationExtension.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirDeserializationExtension.kt index 0b09d100bc3..1f57a1ae4ec 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirDeserializationExtension.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirDeserializationExtension.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.deserialization import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.NameResolver import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource @@ -20,4 +22,6 @@ abstract class FirDeserializationExtension(val session: FirSession) : FirSession ): FirConstDeserializer? = null open fun FirRegularClassBuilder.configureDeserializedClass(classId: ClassId) {} + + open fun loadModuleName(classProto: ProtoBuf.Class, nameResolver: NameResolver): String? = null } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/FirJvmDeserializationExtension.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/FirJvmDeserializationExtension.kt index 9fee78adcfc..94ebd92b1eb 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/FirJvmDeserializationExtension.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/FirJvmDeserializationExtension.kt @@ -14,6 +14,10 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl import org.jetbrains.kotlin.fir.types.toLookupTag import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.NameResolver +import org.jetbrains.kotlin.metadata.deserialization.getExtensionOrNull +import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol @@ -45,6 +49,9 @@ class FirJvmDeserializationExtension(session: FirSession) : FirDeserializationEx } } + override fun loadModuleName(classProto: ProtoBuf.Class, nameResolver: NameResolver): String? = + classProto.getExtensionOrNull(JvmProtoBuf.classModuleName)?.let(nameResolver::getString) + companion object { private val JAVA_IO_SERIALIZABLE = ClassId.topLevel(FqName("java.io.Serializable")) }