// WITH_STDLIB package a import kotlinx.serialization.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* import kotlin.test.assertEquals class Dummy class DummyBox @Serializable(ClassSerializerOnClass::class) class DummySpecified class ClassSerializerGeneric : KSerializer> { override val descriptor get() = PrimitiveSerialDescriptor("ClassSerializerGeneric", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): DummyBox = TODO() override fun serialize(encoder: Encoder, value:DummyBox): Unit = TODO() } class ClassSerializerDummy : KSerializer { override val descriptor get() = PrimitiveSerialDescriptor("ClassSerializerDummy", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): Dummy = TODO() override fun serialize(encoder: Encoder, value: Dummy): Unit = TODO() } object ObjectSerializerGeneric: KSerializer> { override val descriptor get() = PrimitiveSerialDescriptor("ObjectSerializerGeneric", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): DummyBox = TODO() override fun serialize(encoder: Encoder, value: DummyBox): Unit = TODO() } object ObjectSerializerDummy: KSerializer { override val descriptor get() = PrimitiveSerialDescriptor("ObjectSerializerDummy", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): Dummy = TODO() override fun serialize(encoder: Encoder, value:Dummy): Unit = TODO() } class ClassSerializerOnClass: KSerializer { override val descriptor get() = PrimitiveSerialDescriptor("ClassSerializerOnClass", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): DummySpecified = TODO() override fun serialize(encoder: Encoder, value:DummySpecified): Unit = TODO() } @Serializable class Holder( @Serializable(ClassSerializerGeneric::class) val a: DummyBox, @Serializable(ClassSerializerDummy::class) val b: Dummy, @Serializable(ObjectSerializerGeneric::class) val c: DummyBox, @Serializable(ObjectSerializerDummy::class) val d: Dummy, val e: DummySpecified ) fun box(): String { val descs = Holder.serializer().descriptor.elementDescriptors.toList() assertEquals("ClassSerializerGeneric", descs[0].serialName) assertEquals("ClassSerializerDummy", descs[1].serialName) assertEquals("ObjectSerializerGeneric", descs[2].serialName) assertEquals("ObjectSerializerDummy", descs[3].serialName) assertEquals("ClassSerializerOnClass", descs[4].serialName) return "OK" }