Skip to content

Commit b8cee5b

Browse files
committed
more checks
1 parent f987c34 commit b8cee5b

File tree

1 file changed

+9
-8
lines changed
  • formats/cbor/commonMain/src/kotlinx/serialization/cbor/internal

1 file changed

+9
-8
lines changed

formats/cbor/commonMain/src/kotlinx/serialization/cbor/internal/Encoder.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ internal sealed class CborWriter(
3232
getDestination().encodeByteString(byteArray)
3333
}
3434

35-
3635
protected var isClass = false
3736

3837
protected var encodeByteArrayAsByteString = false
@@ -199,17 +198,18 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
199198
internal set
200199

201200

202-
fun add(element: CborElement) = elements.add(element)
201+
open fun add(element: CborElement) = elements.add(element)
203202
class Map(tags: ULongArray, elements: MutableList<CborElement> = mutableListOf()) :
204-
CborContainer(tags, elements) {
205-
}
203+
CborContainer(tags, elements)
206204

207205
class List(tags: ULongArray, elements: MutableList<CborElement> = mutableListOf()) :
208-
CborContainer(tags, elements) {
209-
}
206+
CborContainer(tags, elements)
210207

211208
class Primitive(tags: ULongArray) : CborContainer(tags, elements = mutableListOf()) {
212-
209+
override fun add(element: CborElement): Boolean {
210+
require(elements.isEmpty()) {"Implementation error. Please report a bug."}
211+
return elements.add(element)
212+
}
213213
}
214214

215215
fun finalize() = when (this) {
@@ -221,7 +221,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
221221
tags = tags
222222
)
223223

224-
is Primitive -> elements.first().also { it.tags = tags }
224+
is Primitive -> elements.first().also { it.tags += tags }
225225

226226
}
227227
}
@@ -232,6 +232,7 @@ internal class StructuredCborWriter(cbor: Cbor) : CborWriter(
232232
fun finalize() = currentElement!!.finalize()
233233

234234
override fun beginStructure(descriptor: SerialDescriptor): CompositeEncoder {
235+
//TODO check if cborelement and be done
235236
val tags = descriptor.getObjectTags() ?: ulongArrayOf()
236237
val element = if (descriptor.hasArrayTag()) {
237238
CborContainer.List(tags)

0 commit comments

Comments
 (0)