From 069a88e8038f83deb42489149dce5367322b80f9 Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 21 Apr 2020 14:31:28 +0800 Subject: [PATCH] Remove senseless contracts --- .../net.mamoe.mirai/event/subscriber.kt | 58 +++++-------------- 1 file changed, 16 insertions(+), 42 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt index 4bfa4596e..365996e8b 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt @@ -20,9 +20,6 @@ import net.mamoe.mirai.event.internal.Handler import net.mamoe.mirai.event.internal.subscribeInternal import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.SinceMirai -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext import kotlin.jvm.JvmName @@ -125,7 +122,7 @@ interface Listener : CompletableJob { * @param concurrency 并发类型. 查看 [Listener.ConcurrencyKind] * * @see syncFromEvent 监听一个事件, 并尝试从这个事件中获取一个值. - * @see syncFromEventAsync 异步监听一个事件, 并尝试从这个事件中获取一个值. + * @see asyncFromEvent 异步监听一个事件, 并尝试从这个事件中获取一个值. * * @see selectMessages 以 `when` 的语法 '选择' 即将到来的一条消息. * @see whileSelectMessages 以 `when` 的语法 '选择' 即将到来的所有消息, 直到不满足筛选结果. @@ -137,17 +134,11 @@ interface Listener : CompletableJob { * @see subscribeGroupMessages 监听群消息 DSL * @see subscribeFriendMessages 监听好友消息 DSL */ -@OptIn(ExperimentalContracts::class) inline fun CoroutineScope.subscribe( coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.LOCKED, noinline handler: suspend E.(E) -> ListeningStatus -): Listener { - contract { - callsInPlace(handler, InvocationKind.UNKNOWN) - } - return subscribe(E::class, coroutineContext, concurrency, handler) -} +): Listener = subscribe(E::class, coroutineContext, concurrency, handler) /** * @see CoroutineScope.subscribe @@ -158,8 +149,7 @@ fun CoroutineScope.subscribe( coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.LOCKED, handler: suspend E.(E) -> ListeningStatus -): Listener = - eventClass.subscribeInternal(Handler(coroutineContext, concurrency) { it.handler(it); }) +): Listener = eventClass.subscribeInternal(Handler(coroutineContext, concurrency) { it.handler(it); }) /** * 在指定的 [CoroutineScope] 下订阅所有 [E] 及其子类事件. @@ -172,36 +162,24 @@ fun CoroutineScope.subscribe( * * @see CoroutineScope.subscribe 获取更多说明 */ -@OptIn(ExperimentalContracts::class) inline fun CoroutineScope.subscribeAlways( coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.LOCKED, noinline listener: suspend E.(E) -> Unit -): Listener { - contract { - callsInPlace(listener, InvocationKind.UNKNOWN) - } - return subscribeAlways(E::class, coroutineContext, concurrency, listener) -} +): Listener = subscribeAlways(E::class, coroutineContext, concurrency, listener) /** * @see CoroutineScope.subscribeAlways */ @SinceMirai("0.38.0") -@OptIn(ExperimentalContracts::class) fun CoroutineScope.subscribeAlways( eventClass: KClass, coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.LOCKED, listener: suspend E.(E) -> Unit -): Listener { - contract { - callsInPlace(listener, InvocationKind.UNKNOWN) - } - return eventClass.subscribeInternal( - Handler(coroutineContext, concurrency) { it.listener(it); ListeningStatus.LISTENING } - ) -} +): Listener = eventClass.subscribeInternal( + Handler(coroutineContext, concurrency) { it.listener(it); ListeningStatus.LISTENING } +) /** * 在指定的 [CoroutineScope] 下订阅所有 [E] 及其子类事件. @@ -228,10 +206,9 @@ fun CoroutineScope.subscribeOnce( eventClass: KClass, coroutineContext: CoroutineContext = EmptyCoroutineContext, listener: suspend E.(E) -> Unit -): Listener = - eventClass.subscribeInternal( - Handler(coroutineContext, Listener.ConcurrencyKind.LOCKED) { it.listener(it); ListeningStatus.STOPPED } - ) +): Listener = eventClass.subscribeInternal( + Handler(coroutineContext, Listener.ConcurrencyKind.LOCKED) { it.listener(it); ListeningStatus.STOPPED } +) // // 以下为带筛选 Bot 的监听 @@ -268,10 +245,9 @@ fun Bot.subscribe( coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.LOCKED, handler: suspend E.(E) -> ListeningStatus -): Listener = - eventClass.subscribeInternal( - Handler(coroutineContext, concurrency) { if (it.bot === this) it.handler(it) else ListeningStatus.LISTENING } - ) +): Listener = eventClass.subscribeInternal( + Handler(coroutineContext, concurrency) { if (it.bot === this) it.handler(it) else ListeningStatus.LISTENING } +) /** @@ -303,11 +279,9 @@ fun Bot.subscribeAlways( coroutineContext: CoroutineContext = EmptyCoroutineContext, concurrency: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, listener: suspend E.(E) -> Unit -): Listener { - return eventClass.subscribeInternal( - Handler(coroutineContext, concurrency) { if (it.bot === this) it.listener(it); ListeningStatus.LISTENING } - ) -} +): Listener = eventClass.subscribeInternal( + Handler(coroutineContext, concurrency) { if (it.bot === this) it.listener(it); ListeningStatus.LISTENING } +) /** * 在 [Bot] 的 [CoroutineScope] 下订阅所有 [E] 及其子类事件.