mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-13 06:30:13 +08:00
Deprecate SingleMessage.Serializer for compatibility issue with array polymorphism
This commit is contained in:
parent
9febb66922
commit
5cd617eaa6
@ -11,6 +11,7 @@ package net.mamoe.mirai.message
|
||||
|
||||
import kotlinx.serialization.ContextualSerializer
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.PolymorphicSerializer
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.modules.PolymorphicModuleBuilder
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
@ -26,14 +27,13 @@ import kotlin.reflect.KClass
|
||||
/**
|
||||
* 消息序列化器.
|
||||
*
|
||||
* [MessageSerializers] 存放 [SerializersModule], 用于协助 [SingleMessage.Serializer] 的多态序列化.
|
||||
* [MessageSerializers] 存放 [SerializersModule], 用于协助 [SingleMessage] [PolymorphicSerializer] 的多态序列化.
|
||||
*
|
||||
* 要序列化一个 [MessageChain], 请使用内建的 [MessageChain.serializeToJsonString]
|
||||
*
|
||||
* @see serializersModule
|
||||
*
|
||||
*
|
||||
* @see SingleMessage.Serializer
|
||||
* @see MessageChain.Serializer
|
||||
*
|
||||
* @see MessageSerializers.INSTANCE
|
||||
|
@ -245,7 +245,7 @@ public interface MessageChain :
|
||||
*/
|
||||
public object Serializer : KSerializer<MessageChain> {
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
private val delegate = ListSerializer(SingleMessage.Serializer)
|
||||
private val delegate = ListSerializer(PolymorphicSerializer(SingleMessage::class))
|
||||
override val descriptor: SerialDescriptor = delegate.descriptor
|
||||
override fun deserialize(decoder: Decoder): MessageChain = delegate.deserialize(decoder).toMessageChain()
|
||||
override fun serialize(encoder: Encoder, value: MessageChain): Unit = delegate.serialize(encoder, value)
|
||||
|
@ -19,19 +19,30 @@ package net.mamoe.mirai.message.data
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.PolymorphicSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import net.mamoe.mirai.utils.safeCast
|
||||
|
||||
/**
|
||||
* 单个消息元素. 与之相对的是 [MessageChain], 是多个 [SingleMessage] 的集合.
|
||||
*/
|
||||
@Serializable(SingleMessage.Serializer::class)
|
||||
// @Serializable(SingleMessage.Serializer::class)
|
||||
public interface SingleMessage : Message { // TODO: 2021/1/10 Make sealed interface in Kotlin 1.5
|
||||
|
||||
/**
|
||||
* @suppress deprecated since 2.4.0
|
||||
*/
|
||||
@Deprecated(
|
||||
"Please create PolymorphicSerializer(SingleMessage::class) on your own.",
|
||||
ReplaceWith(
|
||||
"PolymorphicSerializer(SingleMessage::class)",
|
||||
"kotlinx.serialization.PolymorphicSerializer",
|
||||
"net.mamoe.mirai.message.data.SingleMessage",
|
||||
),
|
||||
level = DeprecationLevel.WARNING
|
||||
)
|
||||
public object Serializer : KSerializer<SingleMessage> by PolymorphicSerializer(SingleMessage::class)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 消息元数据, 即不含内容的元素.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user