@@ -41,7 +41,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
4141 override fun serialize (encoder : Encoder , value : C ) {
4242 val elemOutput = encoder.beginStructure(descriptor)
4343 elemOutput.encodeIntElement(descriptor, 1 , value.b)
44- if (value.a != 31 ) elemOutput.encodeIntElement(descriptor, 0 , value.a)
44+ if (value.a != 31 || elemOutput.shouldEncodeElementDefault(descriptor, 0 ) ) elemOutput.encodeIntElement(descriptor, 0 , value.a)
4545 elemOutput.endStructure(descriptor)
4646 }
4747 }
@@ -57,7 +57,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
5757 override fun serialize (encoder : Encoder , value : CList2 ) {
5858 val elemOutput = encoder.beginStructure(descriptor)
5959 elemOutput.encodeSerializableElement(descriptor, 1 , ListSerializer (C ), value.c)
60- if (value.d != 5 ) elemOutput.encodeIntElement(descriptor, 0 , value.d)
60+ if (value.d != 5 || elemOutput.shouldEncodeElementDefault(descriptor, 0 )) {
61+ elemOutput.encodeIntElement(descriptor, 0 , value.d)
62+ }
6163 elemOutput.endStructure(descriptor)
6264 }
6365 }
@@ -69,7 +71,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
6971 companion object : KSerializer <CList3 > {
7072 override fun serialize (encoder : Encoder , value : CList3 ) {
7173 val elemOutput = encoder.beginStructure(descriptor)
72- if (value.e.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0 , ListSerializer (C ), value.e)
74+ if (value.e.isNotEmpty() || elemOutput.shouldEncodeElementDefault(descriptor, 0 )) {
75+ elemOutput.encodeSerializableElement(descriptor, 0 , ListSerializer (C ), value.e)
76+ }
7377 elemOutput.encodeIntElement(descriptor, 1 , value.f)
7478 elemOutput.endStructure(descriptor)
7579 }
@@ -83,7 +87,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
8387 override fun serialize (encoder : Encoder , value : CList4 ) {
8488 val elemOutput = encoder.beginStructure(descriptor)
8589 elemOutput.encodeIntElement(descriptor, 1 , value.h)
86- if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(descriptor, 0 , ListSerializer (C ), value.g)
90+ if (value.g.isNotEmpty() || elemOutput.shouldEncodeElementDefault(descriptor, 0 )) {
91+ elemOutput.encodeSerializableElement(descriptor, 0 , ListSerializer (C ), value.g)
92+ }
8793 elemOutput.endStructure(descriptor)
8894 }
8995 }
@@ -96,10 +102,12 @@ class JsonCustomSerializersTest : JsonTestBase() {
96102 override fun serialize (encoder : Encoder , value : CList5 ) {
97103 val elemOutput = encoder.beginStructure(descriptor)
98104 elemOutput.encodeIntElement(descriptor, 1 , value.h)
99- if (value.g.isNotEmpty()) elemOutput.encodeSerializableElement(
100- descriptor, 0 , ListSerializer (Int .serializer()),
101- value.g
102- )
105+ if (value.g.isNotEmpty() || elemOutput.shouldEncodeElementDefault(descriptor, 0 )) {
106+ elemOutput.encodeSerializableElement(
107+ descriptor, 0 , ListSerializer (Int .serializer()),
108+ value.g
109+ )
110+ }
103111 elemOutput.endStructure(descriptor)
104112 }
105113 }
0 commit comments