Skip to content

Commit 1f9f793

Browse files
committed
Add UByteArray as "bytes" serializer, just like ByteArray
1 parent afe3280 commit 1f9f793

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/ProtobufDecoding.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ internal open class ProtobufDecoder(
242242

243243
override fun <T> decodeSerializableValue(deserializer: DeserializationStrategy<T>): T = decodeSerializableValue(deserializer, null)
244244

245+
@OptIn(ExperimentalUnsignedTypes::class)
245246
@Suppress("UNCHECKED_CAST")
246247
override fun <T> decodeSerializableValue(deserializer: DeserializationStrategy<T>, previousValue: T?): T = try {
247248
when {
@@ -250,6 +251,7 @@ internal open class ProtobufDecoder(
250251
}
251252

252253
deserializer.descriptor == ByteArraySerializer().descriptor -> deserializeByteArray(previousValue as ByteArray?) as T
254+
deserializer.descriptor == UByteArraySerializer().descriptor -> deserializeByteArray((previousValue as UByteArray?)?.asByteArray()).asUByteArray() as T
253255
deserializer is AbstractCollectionSerializer<*, *, *> ->
254256
(deserializer as AbstractCollectionSerializer<*, T, *>).merge(this, previousValue)
255257

formats/protobuf/commonMain/src/kotlinx/serialization/protobuf/internal/ProtobufEncoding.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,13 @@ internal open class ProtobufEncoder(
138138

139139
override fun SerialDescriptor.getTag(index: Int) = extractParameters(index)
140140

141+
@OptIn(ExperimentalUnsignedTypes::class)
141142
override fun <T> encodeSerializableValue(serializer: SerializationStrategy<T>, value: T) = when {
142143
serializer is MapLikeSerializer<*, *, *, *> -> {
143144
serializeMap(serializer as SerializationStrategy<T>, value)
144145
}
145146
serializer.descriptor == ByteArraySerializer().descriptor -> serializeByteArray(value as ByteArray)
147+
serializer.descriptor == UByteArraySerializer().descriptor -> serializeByteArray((value as UByteArray).asByteArray())
146148
else -> serializer.serialize(this, value)
147149
}
148150

0 commit comments

Comments
 (0)