// FIR_IDENTICAL // WITH_STDLIB // FILE: test.kt import kotlinx.serialization.* import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* /* Tests on Serializable(with) on classes */ object Param0Object: ToDoSerializer() @Serializable(Param0Object::class) class Param0WithObject(val i: Int) object Param1Object: ToDoSerializer>() @Serializable(Param1Object::class) class Param1WithObject(val i: T) class Param0Serializer0(): ToDoSerializer() @Serializable(Param0Serializer0::class) class Param0WithCustom0(val i: Int) class Param0Serializer1(val serializer: KSerializer<*>): ToDoSerializer() @Serializable(Param0Serializer1::class) class Param0WithCustom1(val i: Int) class Param0Serializer1Err(val serializer: Any): ToDoSerializer() @Serializable(Param0Serializer1Err::class) class Param0WithCustom1Err(val i: Int) class Param1Serializer0: ToDoSerializer>() @Serializable(Param1Serializer0::class) class Param1WithCustom0(val i: T) class Param1Serializer1(val serializer: KSerializer): ToDoSerializer>() @Serializable(Param1Serializer1::class) class Param1WithCustom(val i: T) class Param1Serializer1Err(val serializer: Any): ToDoSerializer>() @Serializable(Param1Serializer1Err::class) class Param1WithCustom1Err(val i: T) class Param1Serializer2(val serializer: KSerializer, val serializer2: KSerializer): ToDoSerializer>() @Serializable(Param1Serializer2::class) class Param1WithCustom2(val i: T) class Param1Serializer2Err(val serializer1: Any, val serializer2: Any): ToDoSerializer>() @Serializable(Param1Serializer2Err::class) class Param1WithCustom2Err(val i: T) class Param2Serializer1(val serializer: KSerializer): ToDoSerializer>() @Serializable(Param2Serializer1::class) class Param2WithCustom1(val i: T, val k: K) class Param2Serializer2Err(val serializer1: Any, val serializer2: Any): ToDoSerializer>() @Serializable(Param2Serializer2Err::class) class Param2WithCustom2Err(val i: T, val k: K) /* Tests on Serializable(with) on properties */ class Prop0(val t: Int) class Prop0Serializer0(): ToDoSerializer() class Prop0Serializer1(val serializer: KSerializer<*>): ToDoSerializer() class Prop0Serializer1Err(val serializer: Any): ToDoSerializer() object Prop0SerializerObject: ToDoSerializer() class Prop1(val t: T) class Prop1Serializer0(): ToDoSerializer>() class Prop1Serializer1(val serializer: KSerializer): ToDoSerializer>() class Prop1Serializer2(val serializer1: KSerializer, val serializer2: KSerializer): ToDoSerializer>() class Prop1Serializer1Err(val serializer: Any): ToDoSerializer>() class Prop1Serializer2Err(val serializer1: Any, val serializer2: Any): ToDoSerializer>() object Prop1SerializerObject: ToDoSerializer>() @Serializable class Holder( @Serializable(Prop0SerializerObject::class) val obj0: Prop0, @Serializable(Prop0Serializer0::class) val p0_0: Prop0, @Serializable(Prop0Serializer1::class) val p0_1: Prop0, @Serializable(Prop0Serializer1Err::class) val p0_1Err: Prop0, @Serializable(Prop1SerializerObject::class) val obj1T: Prop1, @Serializable(Prop1SerializerObject::class) val obj1: Prop1, @Serializable(Prop1Serializer0::class) val p1_0T: Prop1, @Serializable(Prop1Serializer0::class) val p1_0: Prop1, @Serializable(Prop1Serializer1::class) val p1_1T: Prop1, @Serializable(Prop1Serializer1::class) val p1_1: Prop1, @Serializable(Prop1Serializer2::class) val p1_2T: Prop1, @Serializable(Prop1Serializer2::class) val p1_2: Prop1, @Serializable(Prop1Serializer1Err::class) val p1_1TErr: Prop1, @Serializable(Prop1Serializer1Err::class) val p1_1Err: Prop1, @Serializable(Prop1Serializer2Err::class) val p1_2TErr: Prop1, @Serializable(Prop1Serializer2Err::class) val p1_2Err: Prop1, // generic params val list_obj0: List<@Serializable(Prop0SerializerObject::class) Prop0>, val list_p0_0: List<@Serializable(Prop0Serializer0::class) Prop0>, val list_p0_1: List<@Serializable(Prop0Serializer1::class) Prop0>, val list_p0_1Err: List<@Serializable(Prop0Serializer1Err::class) Prop0>, val list_obj1T: List<@Serializable(Prop1SerializerObject::class) Prop1>, val list_obj1: List<@Serializable(Prop1SerializerObject::class) Prop1>, val list_p1_0T: List<@Serializable(Prop1Serializer0::class) Prop1>, val list_p1_0: List<@Serializable(Prop1Serializer0::class) Prop1>, val list_p1_1T: List<@Serializable(Prop1Serializer1::class) Prop1>, val list_p1_1: List<@Serializable(Prop1Serializer1::class) Prop1>, val list_p1_2T: List<@Serializable(Prop1Serializer2::class) Prop1>, val list_p1_2: List<@Serializable(Prop1Serializer2::class) Prop1>, val list_p1_1TErr: List<@Serializable(Prop1Serializer1Err::class) Prop1>, val list_p1_1Err: List<@Serializable(Prop1Serializer1Err::class) Prop1>, val list_p1_2TErr: List<@Serializable(Prop1Serializer2Err::class) Prop1>, val list_p1_2Err: List<@Serializable(Prop1Serializer2Err::class) Prop1>, ) abstract class ToDoSerializer: KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("TODO SERIALIZER", PrimitiveKind.STRING) override fun deserialize(decoder: Decoder): T = TODO() override fun serialize(encoder: Encoder, value: T) = TODO() }