Skip to content

Commit e3536c6

Browse files
authored
Make Runnable a fun interface (#4261)
1 parent f39e482 commit e3536c6

File tree

6 files changed

+18
-47
lines changed

6 files changed

+18
-47
lines changed

kotlinx-coroutines-core/api/kotlinx-coroutines-core.api

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -561,10 +561,6 @@ public final class kotlinx/coroutines/ParentJob$DefaultImpls {
561561
public static fun plus (Lkotlinx/coroutines/ParentJob;Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/Job;
562562
}
563563

564-
public final class kotlinx/coroutines/RunnableKt {
565-
public static final fun Runnable (Lkotlin/jvm/functions/Function0;)Ljava/lang/Runnable;
566-
}
567-
568564
public final class kotlinx/coroutines/SupervisorKt {
569565
public static final fun SupervisorJob (Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
570566
public static final synthetic fun SupervisorJob (Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/Job;

kotlinx-coroutines-core/api/kotlinx-coroutines-core.klib.api

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ abstract fun interface kotlinx.coroutines/DisposableHandle { // kotlinx.coroutin
9696
abstract fun dispose() // kotlinx.coroutines/DisposableHandle.dispose|dispose(){}[0]
9797
}
9898

99+
abstract fun interface kotlinx.coroutines/Runnable { // kotlinx.coroutines/Runnable|null[0]
100+
abstract fun run() // kotlinx.coroutines/Runnable.run|run(){}[0]
101+
}
102+
99103
abstract interface <#A: in kotlin/Any?> kotlinx.coroutines.channels/ProducerScope : kotlinx.coroutines.channels/SendChannel<#A>, kotlinx.coroutines/CoroutineScope { // kotlinx.coroutines.channels/ProducerScope|null[0]
100104
abstract val channel // kotlinx.coroutines.channels/ProducerScope.channel|{}channel[0]
101105
abstract fun <get-channel>(): kotlinx.coroutines.channels/SendChannel<#A> // kotlinx.coroutines.channels/ProducerScope.channel.<get-channel>|<get-channel>(){}[0]
@@ -326,10 +330,6 @@ abstract interface kotlinx.coroutines/ParentJob : kotlinx.coroutines/Job { // ko
326330
abstract fun getChildJobCancellationCause(): kotlin.coroutines.cancellation/CancellationException // kotlinx.coroutines/ParentJob.getChildJobCancellationCause|getChildJobCancellationCause(){}[0]
327331
}
328332

329-
abstract interface kotlinx.coroutines/Runnable { // kotlinx.coroutines/Runnable|null[0]
330-
abstract fun run() // kotlinx.coroutines/Runnable.run|run(){}[0]
331-
}
332-
333333
sealed interface <#A: in kotlin/Any?, #B: out kotlin/Any?> kotlinx.coroutines.selects/SelectClause2 : kotlinx.coroutines.selects/SelectClause // kotlinx.coroutines.selects/SelectClause2|null[0]
334334

335335
sealed interface <#A: in kotlin/Any?> kotlinx.coroutines.selects/SelectBuilder { // kotlinx.coroutines.selects/SelectBuilder|null[0]
@@ -963,7 +963,6 @@ final inline fun <#A: reified kotlin/Any?, #B: kotlin/Any?> kotlinx.coroutines.f
963963
final inline fun <#A: reified kotlin/Any?> (kotlinx.coroutines.flow/Flow<*>).kotlinx.coroutines.flow/filterIsInstance(): kotlinx.coroutines.flow/Flow<#A> // kotlinx.coroutines.flow/filterIsInstance|[email protected]<*>(){0§<kotlin.Any?>}[0]
964964
final inline fun kotlinx.coroutines.flow.internal/checkIndexOverflow(kotlin/Int): kotlin/Int // kotlinx.coroutines.flow.internal/checkIndexOverflow|checkIndexOverflow(kotlin.Int){}[0]
965965
final inline fun kotlinx.coroutines/CoroutineExceptionHandler(crossinline kotlin/Function2<kotlin.coroutines/CoroutineContext, kotlin/Throwable, kotlin/Unit>): kotlinx.coroutines/CoroutineExceptionHandler // kotlinx.coroutines/CoroutineExceptionHandler|CoroutineExceptionHandler(kotlin.Function2<kotlin.coroutines.CoroutineContext,kotlin.Throwable,kotlin.Unit>){}[0]
966-
final inline fun kotlinx.coroutines/Runnable(crossinline kotlin/Function0<kotlin/Unit>): kotlinx.coroutines/Runnable // kotlinx.coroutines/Runnable|Runnable(kotlin.Function0<kotlin.Unit>){}[0]
967966
final suspend fun (kotlin.collections/Collection<kotlinx.coroutines/Job>).kotlinx.coroutines/joinAll() // kotlinx.coroutines/joinAll|[email protected]<kotlinx.coroutines.Job>(){}[0]
968967
final suspend fun (kotlinx.coroutines.channels/ProducerScope<*>).kotlinx.coroutines.channels/awaitClose(kotlin/Function0<kotlin/Unit> = ...) // kotlinx.coroutines.channels/awaitClose|[email protected]<*>(kotlin.Function0<kotlin.Unit>){}[0]
969968
final suspend fun (kotlinx.coroutines.flow/Flow<*>).kotlinx.coroutines.flow/collect() // kotlinx.coroutines.flow/collect|[email protected]<*>(){}[0]

kotlinx-coroutines-core/common/src/Runnable.common.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@ package kotlinx.coroutines
22

33
/**
44
* A runnable task for [CoroutineDispatcher.dispatch].
5+
*
6+
* It is equivalent to the type `() -> Unit`, but on the JVM, it is represented as a `java.lang.Runnable`,
7+
* making it easier to wrap the interfaces that expect `java.lang.Runnable` into a [CoroutineDispatcher].
58
*/
6-
public expect interface Runnable {
9+
public expect fun interface Runnable {
710
/**
811
* @suppress
912
*/
1013
public fun run()
1114
}
12-
13-
/**
14-
* Creates [Runnable] task instance.
15-
*/
16-
@Suppress("FunctionName")
17-
public expect inline fun Runnable(crossinline block: () -> Unit): Runnable

kotlinx-coroutines-core/jsAndWasmShared/src/Runnable.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,12 @@ package kotlinx.coroutines
22

33
/**
44
* A runnable task for [CoroutineDispatcher.dispatch].
5+
*
6+
* Equivalent to the type `() -> Unit`.
57
*/
6-
public actual interface Runnable {
8+
public actual fun interface Runnable {
79
/**
810
* @suppress
911
*/
1012
public actual fun run()
1113
}
12-
13-
/**
14-
* Creates [Runnable] task instance.
15-
*/
16-
@Suppress("FunctionName")
17-
public actual inline fun Runnable(crossinline block: () -> Unit): Runnable =
18-
object : Runnable {
19-
override fun run() {
20-
block()
21-
}
22-
}

kotlinx-coroutines-core/jvm/src/Runnable.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ package kotlinx.coroutines
22

33
/**
44
* A runnable task for [CoroutineDispatcher.dispatch].
5+
*
6+
* It is a typealias for [java.lang.Runnable], which is widely used in Java APIs.
7+
* This makes it possible to directly pass the argument of [CoroutineDispatcher.dispatch]
8+
* to the underlying Java implementation without any additional wrapping.
59
*/
610
public actual typealias Runnable = java.lang.Runnable
7-
8-
/**
9-
* Creates [Runnable] task instance.
10-
*/
11-
@Suppress("FunctionName")
12-
public actual inline fun Runnable(crossinline block: () -> Unit): Runnable =
13-
java.lang.Runnable { block() }

kotlinx-coroutines-core/native/src/Runnable.kt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,12 @@ package kotlinx.coroutines
22

33
/**
44
* A runnable task for [CoroutineDispatcher.dispatch].
5+
*
6+
* Equivalent to the type `() -> Unit`.
57
*/
6-
public actual interface Runnable {
8+
public actual fun interface Runnable {
79
/**
810
* @suppress
911
*/
1012
public actual fun run()
1113
}
12-
13-
/**
14-
* Creates [Runnable] task instance.
15-
*/
16-
@Suppress("FunctionName")
17-
public actual inline fun Runnable(crossinline block: () -> Unit): Runnable =
18-
object : Runnable {
19-
override fun run() {
20-
block()
21-
}
22-
}

0 commit comments

Comments
 (0)