diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt index 4cb01da68fa..671fd06273d 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.checkers.getContainingDeclarationSymbol +import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr import org.jetbrains.kotlin.fir.copy import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.builder.* @@ -237,6 +238,8 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene type = kSerializerId.constructClassLikeType(arrayOf(typeParam.toConeType()), false) ) } + }.also { + it.containingClassForStaticMemberAttr = ConeClassLikeLookupTagImpl(owner.classId) }.symbol } return result diff --git a/plugins/kotlinx-serialization/testData/boxIr/mpp.kt b/plugins/kotlinx-serialization/testData/boxIr/mpp.kt new file mode 100644 index 00000000000..2f9621d05e5 --- /dev/null +++ b/plugins/kotlinx-serialization/testData/boxIr/mpp.kt @@ -0,0 +1,28 @@ +// IGNORE_BACKEND_K1: JVM_IR +// TARGET_BACKEND: JVM_IR +// !LANGUAGE: +MultiPlatformProjects +// WITH_STDLIB + +// MODULE: common +// TARGET_PLATFORM: Common +// FILE: common.kt + +import kotlinx.serialization.* + +@Serializable +class Bar(val t: T) + +@Serializable +class Wrapper(val b: Bar) + +// MODULE: jvm()()(common) +// TARGET_PLATFORM: JVM +// FILE: main.kt + +import kotlinx.serialization.* +import kotlinx.serialization.json.* +import kotlinx.serialization.descriptors.* + +fun box(): String { + return if (Wrapper.serializer().descriptor.elementDescriptors.first().toString() == "Bar(t: kotlin.String)") "OK" else "FAIL" +} \ No newline at end of file diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java index 09aa37163d4..325ab38cb1e 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirBlackBoxTestGenerated.java @@ -117,6 +117,12 @@ public class SerializationFirBlackBoxTestGenerated extends AbstractSerialization runTest("plugins/kotlinx-serialization/testData/boxIr/metaSerializable.kt"); } + @Test + @TestMetadata("mpp.kt") + public void testMpp() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/mpp.kt"); + } + @Test @TestMetadata("multiFieldValueClasses.kt") public void testMultiFieldValueClasses() throws Exception { diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java index 3e66d7d85c2..ac76e285de4 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java @@ -115,6 +115,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT runTest("plugins/kotlinx-serialization/testData/boxIr/metaSerializable.kt"); } + @Test + @TestMetadata("mpp.kt") + public void testMpp() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/mpp.kt"); + } + @Test @TestMetadata("multiFieldValueClasses.kt") public void testMultiFieldValueClasses() throws Exception {