blob: 874ff3ee57fa4b403af3d6f26a8f0426a31a7700 [file]
// WITH_STDLIB
// TARGET_BACKEND: JVM_IR
// FILE: Md5.java
import kotlinx.serialization.Serializable;
@Serializable(with = Md5Serializer.class)
public class Md5 {
public final String value;
public Md5(String v) {
value = v;
}
}
// FILE: Md5Serializer.kt
import kotlinx.serialization.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.descriptors.*
class Md5Serializer: KSerializer<Md5> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("MD5", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Md5) {
encoder.encodeString(value.value)
}
override fun deserialize(decoder: Decoder): Md5 {
return Md5(decoder.decodeString())
}
}
// FILE: main.kt
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
class A(val md5: Md5)
fun box(): String {
val a = A(Md5("OK"))
return Json.decodeFromString<A>(Json.encodeToString(a)).md5.value
}