Skip to content

Commit 6fd6cc9

Browse files
committed
Support tagged not null marks
1 parent bf3269b commit 6fd6cc9

File tree

2 files changed

+3
-1
lines changed
  • core/commonMain/src/kotlinx/serialization/internal
  • formats/json/commonMain/src/kotlinx/serialization/json/internal

2 files changed

+3
-1
lines changed

core/commonMain/src/kotlinx/serialization/internal/Tagged.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public abstract class TaggedEncoder<Tag : Any?> : Encoder, CompositeEncoder {
3030
protected open fun encodeTaggedValue(tag: Tag, value: Any): Unit =
3131
throw SerializationException("Non-serializable ${value::class} is not supported by ${this::class} encoder")
3232

33+
protected open fun encodeTaggedNonNullMark(tag: Tag) {}
3334
protected open fun encodeTaggedNull(tag: Tag): Unit = throw SerializationException("null is not supported")
3435
protected open fun encodeTaggedInt(tag: Tag, value: Int): Unit = encodeTaggedValue(tag, value)
3536
protected open fun encodeTaggedByte(tag: Tag, value: Byte): Unit = encodeTaggedValue(tag, value)
@@ -61,7 +62,7 @@ public abstract class TaggedEncoder<Tag : Any?> : Encoder, CompositeEncoder {
6162
return true
6263
}
6364

64-
final override fun encodeNotNullMark() {} // Does nothing, open because is not really required
65+
open override fun encodeNotNullMark(): Unit = encodeTaggedNonNullMark(currentTag)
6566
open override fun encodeNull(): Unit = encodeTaggedNull(popTag())
6667
final override fun encodeBoolean(value: Boolean): Unit = encodeTaggedBoolean(popTag(), value)
6768
final override fun encodeByte(value: Byte): Unit = encodeTaggedByte(popTag(), value)

formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ private sealed class AbstractJsonTreeEncoder(
4646
abstract fun putElement(key: String, element: JsonElement)
4747
abstract fun getCurrent(): JsonElement
4848

49+
override fun encodeNotNullMark() {}
4950

5051
override fun encodeNull() {
5152
val tag = currentTagOrNull ?: return nodeConsumer(JsonNull)

0 commit comments

Comments
 (0)