@@ -41,7 +41,7 @@ class JsonCustomSerializersTest : JsonTestBase() {
41
41
override fun serialize (encoder : Encoder , value : C ) {
42
42
val elemOutput = encoder.beginStructure(descriptor)
43
43
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)
45
45
elemOutput.endStructure(descriptor)
46
46
}
47
47
}
@@ -57,7 +57,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
57
57
override fun serialize (encoder : Encoder , value : CList2 ) {
58
58
val elemOutput = encoder.beginStructure(descriptor)
59
59
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
+ }
61
63
elemOutput.endStructure(descriptor)
62
64
}
63
65
}
@@ -69,7 +71,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
69
71
companion object : KSerializer <CList3 > {
70
72
override fun serialize (encoder : Encoder , value : CList3 ) {
71
73
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
+ }
73
77
elemOutput.encodeIntElement(descriptor, 1 , value.f)
74
78
elemOutput.endStructure(descriptor)
75
79
}
@@ -83,7 +87,9 @@ class JsonCustomSerializersTest : JsonTestBase() {
83
87
override fun serialize (encoder : Encoder , value : CList4 ) {
84
88
val elemOutput = encoder.beginStructure(descriptor)
85
89
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
+ }
87
93
elemOutput.endStructure(descriptor)
88
94
}
89
95
}
@@ -96,10 +102,12 @@ class JsonCustomSerializersTest : JsonTestBase() {
96
102
override fun serialize (encoder : Encoder , value : CList5 ) {
97
103
val elemOutput = encoder.beginStructure(descriptor)
98
104
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
+ }
103
111
elemOutput.endStructure(descriptor)
104
112
}
105
113
}
0 commit comments