From 2a9b88c0ab6f38d19eff43d26482c5d1bb419380 Mon Sep 17 00:00:00 2001 From: Dmitry Khalanskiy <52952525+dkhalanskyjb@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:50:54 +0100 Subject: [PATCH] Fix binary incompatibility introduced in #4261 (#4310) Fixes #4309 --- .../api/kotlinx-coroutines-core.klib.api | 1 + .../jsAndWasmShared/src/Runnable.kt | 11 +++++++++++ kotlinx-coroutines-core/native/src/Runnable.kt | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/kotlinx-coroutines-core/api/kotlinx-coroutines-core.klib.api b/kotlinx-coroutines-core/api/kotlinx-coroutines-core.klib.api index a27e3154af..9ba54a4e00 100644 --- a/kotlinx-coroutines-core/api/kotlinx-coroutines-core.klib.api +++ b/kotlinx-coroutines-core/api/kotlinx-coroutines-core.klib.api @@ -963,6 +963,7 @@ final inline fun <#A: reified kotlin/Any?, #B: kotlin/Any?> kotlinx.coroutines.f final inline fun <#A: reified kotlin/Any?> (kotlinx.coroutines.flow/Flow<*>).kotlinx.coroutines.flow/filterIsInstance(): kotlinx.coroutines.flow/Flow<#A> // kotlinx.coroutines.flow/filterIsInstance|filterIsInstance@kotlinx.coroutines.flow.Flow<*>(){0ยง}[0] final inline fun kotlinx.coroutines.flow.internal/checkIndexOverflow(kotlin/Int): kotlin/Int // kotlinx.coroutines.flow.internal/checkIndexOverflow|checkIndexOverflow(kotlin.Int){}[0] final inline fun kotlinx.coroutines/CoroutineExceptionHandler(crossinline kotlin/Function2): kotlinx.coroutines/CoroutineExceptionHandler // kotlinx.coroutines/CoroutineExceptionHandler|CoroutineExceptionHandler(kotlin.Function2){}[0] +final inline fun kotlinx.coroutines/Runnable(crossinline kotlin/Function0): kotlinx.coroutines/Runnable // kotlinx.coroutines/Runnable|Runnable(kotlin.Function0){}[0] final suspend fun (kotlin.collections/Collection).kotlinx.coroutines/joinAll() // kotlinx.coroutines/joinAll|joinAll@kotlin.collections.Collection(){}[0] final suspend fun (kotlinx.coroutines.channels/ProducerScope<*>).kotlinx.coroutines.channels/awaitClose(kotlin/Function0 = ...) // kotlinx.coroutines.channels/awaitClose|awaitClose@kotlinx.coroutines.channels.ProducerScope<*>(kotlin.Function0){}[0] final suspend fun (kotlinx.coroutines.flow/Flow<*>).kotlinx.coroutines.flow/collect() // kotlinx.coroutines.flow/collect|collect@kotlinx.coroutines.flow.Flow<*>(){}[0] diff --git a/kotlinx-coroutines-core/jsAndWasmShared/src/Runnable.kt b/kotlinx-coroutines-core/jsAndWasmShared/src/Runnable.kt index d4f6ea8e53..d93e3f2073 100644 --- a/kotlinx-coroutines-core/jsAndWasmShared/src/Runnable.kt +++ b/kotlinx-coroutines-core/jsAndWasmShared/src/Runnable.kt @@ -11,3 +11,14 @@ public actual fun interface Runnable { */ public actual fun run() } + +@Deprecated( + "Preserved for binary compatibility, see https://github.com/Kotlin/kotlinx.coroutines/issues/4309", + level = DeprecationLevel.HIDDEN +) +public inline fun Runnable(crossinline block: () -> Unit): Runnable = + object : Runnable { + override fun run() { + block() + } + } diff --git a/kotlinx-coroutines-core/native/src/Runnable.kt b/kotlinx-coroutines-core/native/src/Runnable.kt index d4f6ea8e53..d93e3f2073 100644 --- a/kotlinx-coroutines-core/native/src/Runnable.kt +++ b/kotlinx-coroutines-core/native/src/Runnable.kt @@ -11,3 +11,14 @@ public actual fun interface Runnable { */ public actual fun run() } + +@Deprecated( + "Preserved for binary compatibility, see https://github.com/Kotlin/kotlinx.coroutines/issues/4309", + level = DeprecationLevel.HIDDEN +) +public inline fun Runnable(crossinline block: () -> Unit): Runnable = + object : Runnable { + override fun run() { + block() + } + }