Him188 5 лет назад
Родитель
Сommit
162dfb7c71

+ 9 - 8
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/CombinedMessage.kt

@@ -34,7 +34,7 @@ internal constructor(
     @JvmField internal val left: Message, // 必须已经完成 constrain single
     @JvmField internal val left: Message, // 必须已经完成 constrain single
     @JvmField internal val tail: Message
     @JvmField internal val tail: Message
 ) : Message, MessageChain {
 ) : Message, MessageChain {
-    @OptIn(MiraiExperimentalAPI::class)
+
     fun asSequence(): Sequence<SingleMessage> = sequence {
     fun asSequence(): Sequence<SingleMessage> = sequence {
         yieldCombinedOrElementsFlatten(this@CombinedMessage)
         yieldCombinedOrElementsFlatten(this@CombinedMessage)
     }
     }
@@ -43,12 +43,13 @@ internal constructor(
         return asSequence().iterator()
         return asSequence().iterator()
     }
     }
 
 
-    override val size: Int by lazy {
-        var size = 0
-        size += if (left is MessageChain) left.size else 1
-        size += if (tail is MessageChain) tail.size else 1
-        size
-    }
+    override val size: Int
+        get() = kotlin.run {
+            var size = 0
+            size += if (left is MessageChain) left.size else 1
+            size += if (tail is MessageChain) tail.size else 1
+            size
+        }
 
 
     override fun equals(other: Any?): Boolean {
     override fun equals(other: Any?): Boolean {
         return other is CombinedMessage && other.left == this.left && other.tail == this.tail
         return other is CombinedMessage && other.left == this.left && other.tail == this.tail
@@ -76,7 +77,7 @@ internal constructor(
 private suspend fun SequenceScope<SingleMessage>.yieldCombinedOrElementsFlatten(message: Message) {
 private suspend fun SequenceScope<SingleMessage>.yieldCombinedOrElementsFlatten(message: Message) {
     when (message) {
     when (message) {
         is CombinedMessage -> {
         is CombinedMessage -> {
-            // fast path, 避免创建新的 iterator, 也不会挂起协程
+            // fast path
             yieldCombinedOrElementsFlatten(message.left)
             yieldCombinedOrElementsFlatten(message.left)
             yieldCombinedOrElementsFlatten(message.tail)
             yieldCombinedOrElementsFlatten(message.tail)
         }
         }