From 6103628801237823af0926d0f9d9250162ea0f0b Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sun, 12 Dec 2021 19:12:06 +0000
Subject: [PATCH] Remove __broadcastJava

---
 ...binary-compatibility-validator-android.api |  2 +-
 .../api/binary-compatibility-validator.api    |  2 +-
 .../src/commonMain/kotlin/event/Event.kt      | 20 ++-----------------
 .../kotlin/event/JvmMethodEventsTestJava.kt   |  3 ++-
 .../event/SimpleListenerHostTestJava.kt       |  3 ++-
 5 files changed, 8 insertions(+), 22 deletions(-)

diff --git a/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api b/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api
index aa545bc3d..8db04558a 100644
--- a/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api
+++ b/binary-compatibility-validator/android/api/binary-compatibility-validator-android.api
@@ -1750,7 +1750,7 @@ public abstract interface annotation class net/mamoe/mirai/event/EventHandler :
 
 public final class net/mamoe/mirai/event/EventKt {
 	public static final fun broadcast (Lnet/mamoe/mirai/event/Event;)Lnet/mamoe/mirai/event/Event;
-	public static final synthetic fun broadcast (Lnet/mamoe/mirai/event/Event;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+	public static final fun broadcast (Lnet/mamoe/mirai/event/Event;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public static final fun getEventDisabled ()Z
 	public static final fun setEventDisabled (Z)V
 }
diff --git a/binary-compatibility-validator/api/binary-compatibility-validator.api b/binary-compatibility-validator/api/binary-compatibility-validator.api
index 86af8c668..798abe748 100644
--- a/binary-compatibility-validator/api/binary-compatibility-validator.api
+++ b/binary-compatibility-validator/api/binary-compatibility-validator.api
@@ -1750,7 +1750,7 @@ public abstract interface annotation class net/mamoe/mirai/event/EventHandler :
 
 public final class net/mamoe/mirai/event/EventKt {
 	public static final fun broadcast (Lnet/mamoe/mirai/event/Event;)Lnet/mamoe/mirai/event/Event;
-	public static final synthetic fun broadcast (Lnet/mamoe/mirai/event/Event;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+	public static final fun broadcast (Lnet/mamoe/mirai/event/Event;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public static final fun getEventDisabled ()Z
 	public static final fun setEventDisabled (Z)V
 }
diff --git a/mirai-core-api/src/commonMain/kotlin/event/Event.kt b/mirai-core-api/src/commonMain/kotlin/event/Event.kt
index 82c24762d..863dbe9f5 100644
--- a/mirai-core-api/src/commonMain/kotlin/event/Event.kt
+++ b/mirai-core-api/src/commonMain/kotlin/event/Event.kt
@@ -11,9 +11,9 @@
 
 package net.mamoe.mirai.event
 
-import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.sync.Mutex
 import kotlinx.coroutines.sync.withLock
+import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
 import net.mamoe.mirai.Mirai
 import net.mamoe.mirai.event.events.BotEvent
 import net.mamoe.mirai.event.events.MessageEvent
@@ -21,7 +21,6 @@ import net.mamoe.mirai.internal.event.VerboseEvent
 import net.mamoe.mirai.internal.event.callAndRemoveIfRequired
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.utils.*
-import net.mamoe.mirai.utils.JavaFriendlyAPI
 
 /**
  * 可被监听的类, 可以是任何 class 或 object.
@@ -143,7 +142,7 @@ public interface CancellableEvent : Event {
  *
  * @see __broadcastJava Java 使用
  */
-@JvmSynthetic
+@JvmBlockingBridge
 public suspend fun <E : Event> E.broadcast(): E = _EventBroadcast.implementation.broadcastPublic(this)
 
 /**
@@ -206,21 +205,6 @@ internal open class _EventBroadcast {
     private val topLevelEventLogger by lazy { MiraiLogger.Factory.create(Event::class, "EventPipeline") }
 }
 
-/**
- * 在 Java 广播一个事件的唯一途径.
- *
- * 调用方法: `EventKt.broadcast(event)`
- */
-@Suppress("FunctionName")
-@JvmName("broadcast")
-@JavaFriendlyAPI
-public fun <E : Event> E.__broadcastJava(): E = apply {
-    if (this is BroadcastControllable && !this.shouldBroadcast) {
-        return@apply
-    }
-    runBlocking { this@__broadcastJava.broadcast() }
-}
-
 /**
  * 设置为 `true` 以关闭事件.
  * 所有的 `subscribe` 都能正常添加到监听器列表, 但所有的广播都会直接返回.
diff --git a/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTestJava.kt b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTestJava.kt
index 07f490a61..e719246eb 100644
--- a/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTestJava.kt
+++ b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTestJava.kt
@@ -10,6 +10,7 @@
 package net.mamoe.mirai.event
 
 import kotlinx.coroutines.cancel
+import kotlinx.coroutines.runBlocking
 import net.mamoe.mirai.utils.EventListenerLikeJava
 import net.mamoe.mirai.utils.JavaFriendlyAPI
 import org.junit.jupiter.api.Test
@@ -24,7 +25,7 @@ internal class JvmMethodEventsTestJava : AbstractEventTest() {
     fun test() {
         val host = TestHost(called)
         GlobalEventChannel.registerListenerHost(host)
-        TestEvent().__broadcastJava()
+        runBlocking { TestEvent().broadcast() }
         assertEquals(3, called.get(), null)
         host.cancel() // reset listeners
     }
diff --git a/mirai-core-api/src/jvmTest/kotlin/event/SimpleListenerHostTestJava.kt b/mirai-core-api/src/jvmTest/kotlin/event/SimpleListenerHostTestJava.kt
index 9afa5ff3e..ba1e38ff0 100644
--- a/mirai-core-api/src/jvmTest/kotlin/event/SimpleListenerHostTestJava.kt
+++ b/mirai-core-api/src/jvmTest/kotlin/event/SimpleListenerHostTestJava.kt
@@ -10,6 +10,7 @@
 package net.mamoe.mirai.event
 
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.runBlocking
 import net.mamoe.mirai.utils.EventListenerLikeJava
 import net.mamoe.mirai.utils.JavaFriendlyAPI
 import org.junit.jupiter.api.Test
@@ -34,7 +35,7 @@ internal class SimpleListenerHostTestJava : AbstractEventTest() {
         }
         val scope = CoroutineScope(EmptyCoroutineContext)
         scope.globalEventChannel().registerListenerHost(host)
-        object : AbstractEvent() {}.__broadcastJava()
+        runBlocking { object : AbstractEvent() {}.broadcast() }
         if (!called.get()) {
             throw AssertionError("JavaTest: SimpleListenerHost Failed.")
         }