diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/builder.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/builder.kt index afaeb7b72..b4c84c986 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/builder.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/builder.kt @@ -48,13 +48,13 @@ inline fun buildMessageChain(initialSize: Int, block: MessageChainBuilder.() -> * @see asMessageChain 完成构建 */ @OptIn(MiraiExperimentalAPI::class) -class MessageChainBuilder private constructor( +open class MessageChainBuilder private constructor( private val container: MutableList<SingleMessage> ) : MutableList<SingleMessage> by container, Appendable { constructor() : this(mutableListOf()) constructor(initialSize: Int) : this(ArrayList<SingleMessage>(initialSize)) - override fun add(element: SingleMessage): Boolean { + final override fun add(element: SingleMessage): Boolean { checkBuilt() flushCache() return addAndCheckConstrainSingle(element) @@ -72,7 +72,7 @@ class MessageChainBuilder private constructor( } } - override fun addAll(elements: Collection<SingleMessage>): Boolean { + final override fun addAll(elements: Collection<SingleMessage>): Boolean { checkBuilt() flushCache() return addAll(elements.flatten()) @@ -124,9 +124,9 @@ class MessageChainBuilder private constructor( withCache { append(charSequence) } } - override fun append(value: Char): MessageChainBuilder = withCache { append(value) } - override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) } - override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder = + final override fun append(value: Char): MessageChainBuilder = withCache { append(value) } + final override fun append(value: CharSequence?): MessageChainBuilder = withCache { append(value) } + final override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): MessageChainBuilder = withCache { append(value, startIndex, endIndex) } fun append(message: Message): MessageChainBuilder = apply { add(message) } @@ -153,27 +153,27 @@ class MessageChainBuilder private constructor( /////// // FOR IMMUTABLE SAFETY - override fun remove(element: SingleMessage): Boolean { + final override fun remove(element: SingleMessage): Boolean { checkBuilt() return container.remove(element) } - override fun removeAll(elements: Collection<SingleMessage>): Boolean { + final override fun removeAll(elements: Collection<SingleMessage>): Boolean { checkBuilt() return container.removeAll(elements) } - override fun removeAt(index: Int): SingleMessage { + final override fun removeAt(index: Int): SingleMessage { checkBuilt() return container.removeAt(index) } - override fun clear() { + final override fun clear() { checkBuilt() return container.clear() } - override fun set(index: Int, element: SingleMessage): SingleMessage { + final override fun set(index: Int, element: SingleMessage): SingleMessage { checkBuilt() return container.set(index, element) }