// TARGET_BACKEND: JVM_IR // WITH_STDLIB import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlinx.serialization.internal.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.modules.* import kotlin.test.* @Serializable @JsonClassDiscriminator("sealed") sealed class Sealed @Serializable @JsonClassDiscriminator("abstract") abstract class Abstract @Serializable @JsonClassDiscriminator("object") object Object fun test(descriptor: SerialDescriptor, value: String, name: String = descriptor.serialName) { val anno = descriptor.annotations.filterIsInstance().singleOrNull() requireNotNull(anno) { "Annotation value not found for $name" } assertEquals(anno.discriminator, value, "Annotation value incorrect for $name") } fun box(): String { test(serializer().descriptor, "sealed") test(serializer().descriptor, "abstract") test(serializer().descriptor, "object") test(serializer>().descriptor.getElementDescriptor(0), "sealed", "List") test(serializer>().descriptor.getElementDescriptor(0), "abstract", "List") test(serializer>().descriptor.getElementDescriptor(0), "object", "List") test(serializer>().descriptor.getElementDescriptor(0), "sealed", "Array") return "OK" }