Skip to content

Commit cdf8468

Browse files
Groostavelizarov
authored andcommitted
Corrected return-type of EventLoop pseudo ctor
* Also preserve binary compatibility See PR #477
1 parent 4df1d61 commit cdf8468

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

binary-compatibility-validator/reference-public-api/kotlinx-coroutines-core.txt

+11-2
Original file line numberDiff line numberDiff line change
@@ -281,19 +281,28 @@ public abstract interface class kotlinx/coroutines/experimental/DisposableHandle
281281
public abstract fun dispose ()V
282282
}
283283

284-
public abstract interface class kotlinx/coroutines/experimental/EventLoop {
284+
public abstract interface class kotlinx/coroutines/experimental/EventLoop : kotlin/coroutines/experimental/ContinuationInterceptor {
285285
public static final field Factory Lkotlinx/coroutines/experimental/EventLoop$Factory;
286286
public abstract fun processNextEvent ()J
287287
}
288288

289+
public final class kotlinx/coroutines/experimental/EventLoop$DefaultImpls {
290+
public static fun fold (Lkotlinx/coroutines/experimental/EventLoop;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
291+
public static fun get (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element;
292+
public static fun minusKey (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext;
293+
public static fun plus (Lkotlinx/coroutines/experimental/EventLoop;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext;
294+
}
295+
289296
public final class kotlinx/coroutines/experimental/EventLoop$Factory {
290297
public final synthetic fun invoke (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
291298
public static synthetic fun invoke$default (Lkotlinx/coroutines/experimental/EventLoop$Factory;Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
292299
}
293300

294301
public final class kotlinx/coroutines/experimental/EventLoopKt {
295-
public static final fun EventLoop (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
302+
public static final synthetic fun EventLoop (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
303+
public static final fun EventLoop (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;)Lkotlinx/coroutines/experimental/EventLoop;
296304
public static synthetic fun EventLoop$default (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/CoroutineDispatcher;
305+
public static synthetic fun EventLoop$default (Ljava/lang/Thread;Lkotlinx/coroutines/experimental/Job;ILjava/lang/Object;)Lkotlinx/coroutines/experimental/EventLoop;
297306
}
298307

299308
public abstract class kotlinx/coroutines/experimental/ExecutorCoroutineDispatcherBase : kotlinx/coroutines/experimental/CloseableCoroutineDispatcher, kotlinx/coroutines/experimental/Delay {

core/kotlinx-coroutines-core/src/EventLoop.kt

+10-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import kotlin.coroutines.experimental.*
1717
* It may optionally implement [Delay] interface and support time-scheduled tasks. It is used by [runBlocking] to
1818
* continue processing events when invoked from the event dispatch thread.
1919
*/
20-
public interface EventLoop {
20+
public interface EventLoop: ContinuationInterceptor {
2121
/**
2222
* Processes next event in this event loop.
2323
*
@@ -54,11 +54,19 @@ public interface EventLoop {
5454
* ```
5555
*/
5656
@Suppress("FunctionName")
57-
public fun EventLoop(thread: Thread = Thread.currentThread(), parentJob: Job? = null): CoroutineDispatcher =
57+
public fun EventLoop(thread: Thread = Thread.currentThread(), parentJob: Job? = null): EventLoop =
5858
EventLoopImpl(thread).apply {
5959
if (parentJob != null) initParentJob(parentJob)
6060
}
6161

62+
/**
63+
* @suppress **Deprecated**: Preserves binary compatibility with old code
64+
*/
65+
@JvmName("EventLoop")
66+
@Deprecated(level = DeprecationLevel.HIDDEN, message = "Preserves binary compatibility with old code")
67+
public fun EventLoop_Deprecated(thread: Thread = Thread.currentThread(), parentJob: Job? = null): CoroutineDispatcher =
68+
EventLoop(thread, parentJob) as CoroutineDispatcher
69+
6270
private const val DELAYED = 0
6371
private const val REMOVED = 1
6472
private const val RESCHEDULED = 2

0 commit comments

Comments
 (0)