diff --git a/plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule_multipleFields.kt b/plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule_multipleFields.kt new file mode 100644 index 00000000000..3637bcc0fb0 --- /dev/null +++ b/plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule_multipleFields.kt @@ -0,0 +1,42 @@ +// TARGET_BACKEND: JVM_IR +// WITH_STDLIB +// ISSUE: KT-57626 + +// MODULE: lib +import kotlinx.serialization.* + +@Serializable +open class Base( + val c: Int = 1, + val b: String = "hello", + val a: List = listOf("a") +) + +// MODULE: main(lib) +import kotlinx.serialization.* +import kotlinx.serialization.json.* + +@Serializable +class Derived(val d: Long = 1000000000000) : Base(2, "world", listOf("b", "c")) { + override fun equals(other: Any?): Boolean { + if (other !is Derived) return false + return a == other.a && b == other.b && c == other.c && d == other.d + } + + override fun toString(): String { + return "a: $a, b: $b, c: $c, d: $d" + } +} + +fun box(): String { + val expected = Derived(12) + val result = Json.encodeToString(Derived.serializer(), expected) + if (result != """{"c":2,"b":"world","a":["b","c"],"d":12}""") { + return "Fail: $result" + } + val actual = Json.decodeFromString(Derived.serializer(), result) + if (expected != actual) { + return "Fail: expected: $expected\nactual: $actual" + } + return "OK" +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java index ba153327a3f..3de8f0ac03a 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java @@ -213,6 +213,12 @@ public class SerializationFirLightTreeBlackBoxTestGenerated extends AbstractSeri runTest("plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule.kt"); } + @Test + @TestMetadata("serializableFromAnotherModule_multipleFields.kt") + public void testSerializableFromAnotherModule_multipleFields() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule_multipleFields.kt"); + } + @Test @TestMetadata("serializableOnPropertyType.kt") public void testSerializableOnPropertyType() 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 57ade1a1ef7..3279019cd55 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 @@ -211,6 +211,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT runTest("plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule.kt"); } + @Test + @TestMetadata("serializableFromAnotherModule_multipleFields.kt") + public void testSerializableFromAnotherModule_multipleFields() throws Exception { + runTest("plugins/kotlinx-serialization/testData/boxIr/serializableFromAnotherModule_multipleFields.kt"); + } + @Test @TestMetadata("serializableOnPropertyType.kt") public void testSerializableOnPropertyType() throws Exception {