• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 package kotlinx.serialization.internal
5 
6 import kotlinx.serialization.KSerializer
7 import kotlinx.serialization.SerializationException
8 import kotlinx.serialization.descriptors.PrimitiveKind
9 import kotlinx.serialization.descriptors.SerialDescriptor
10 import kotlinx.serialization.encoding.Decoder
11 import kotlinx.serialization.encoding.Encoder
12 import kotlin.time.Duration
13 
14 
15 @PublishedApi
16 internal object DurationSerializer : KSerializer<Duration> {
17     override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("kotlin.time.Duration", PrimitiveKind.STRING)
18 
serializenull19     override fun serialize(encoder: Encoder, value: Duration) {
20         encoder.encodeString(value.toIsoString())
21     }
22 
deserializenull23     override fun deserialize(decoder: Decoder): Duration {
24         return Duration.parseIsoString(decoder.decodeString())
25     }
26 }
27 
28 @PublishedApi
29 internal object NothingSerializer : KSerializer<Nothing> {
30     override val descriptor: SerialDescriptor = NothingSerialDescriptor
31 
serializenull32     override fun serialize(encoder: Encoder, value: Nothing) {
33         throw SerializationException("'kotlin.Nothing' cannot be serialized")
34     }
35 
deserializenull36     override fun deserialize(decoder: Decoder): Nothing {
37         throw SerializationException("'kotlin.Nothing' does not have instances")
38     }
39 }
40