Make deprecated API hidden, replace deprecated API with new one
diff --git a/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt b/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
index 882b2cc..718a601 100644
--- a/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
+++ b/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/CancellableContinuation.kt
@@ -130,7 +130,7 @@
@Deprecated(
message = "Disposable handlers on regular completion are no longer supported",
replaceWith = ReplaceWith("invokeOnCancellation(handler)"),
- level = DeprecationLevel.WARNING)
+ level = DeprecationLevel.HIDDEN)
public fun invokeOnCompletion(handler: CompletionHandler): DisposableHandle
/**
@@ -209,7 +209,7 @@
@Deprecated(
message = "Disposable handlers on cancellation are no longer supported",
replaceWith = ReplaceWith("removeOnCancellation(handler)"),
- level = DeprecationLevel.WARNING)
+ level = DeprecationLevel.HIDDEN)
public fun CancellableContinuation<*>.removeOnCancel(node: LockFreeLinkedListNode): DisposableHandle {
invokeOnCancellation(handler = RemoveOnCancel(this as CancellableContinuationImpl<*>, node).asHandler)
return NonDisposableHandle
@@ -222,15 +222,31 @@
public fun CancellableContinuation<*>.removeOnCancellation(node: LockFreeLinkedListNode): Unit =
invokeOnCancellation(handler = RemoveOnCancel(this as CancellableContinuationImpl<*>, node).asHandler)
+/**
+ * Disposes a specified [handle] when this continuation is cancelled.
+ *
+ * This is a shortcut for the following code with slightly more efficient implementation (one fewer object created).
+ * ```
+ * invokeOnCancellation { handle.dispose() }
+ * ```
+ */
@Deprecated(
message = "Disposable handlers on regular completion are no longer supported",
replaceWith = ReplaceWith("disposeOnCancellation(handler)"),
- level = DeprecationLevel.WARNING)
+ level = DeprecationLevel.HIDDEN)
public fun CancellableContinuation<*>.disposeOnCompletion(handle: DisposableHandle): DisposableHandle {
invokeOnCancellation(handler = DisposeOnCancellation(this as CancellableContinuationImpl<*>, handle).asHandler)
return NonDisposableHandle
}
+/**
+ * Disposes a specified [handle] when this continuation is cancelled.
+ *
+ * This is a shortcut for the following code with slightly more efficient implementation (one fewer object created).
+ * ```
+ * invokeOnCancellation { handle.dispose() }
+ * ```
+ */
public fun CancellableContinuation<*>.disposeOnCancellation(handle: DisposableHandle) =
invokeOnCancellation(handler = DisposeOnCancellation(this as CancellableContinuationImpl<*>, handle).asHandler)
diff --git a/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt b/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
index 9807059..7c650c5 100644
--- a/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
+++ b/common/kotlinx-coroutines-core-common/src/main/kotlin/kotlinx/coroutines/experimental/sync/Mutex.kt
@@ -230,7 +230,7 @@
if (state.addLastIf(waiter, { _state.value === state })) {
// added to waiter list!
cont.initCancellability() // make it properly cancellable
- cont.removeOnCancel(waiter)
+ cont.removeOnCancellation(waiter)
return@sc
}
}
diff --git a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
index f20753a..67f3b34 100644
--- a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Executors.kt
@@ -72,7 +72,7 @@
?.schedule(ResumeUndispatchedRunnable(this, continuation), time, unit) }
catch (e: RejectedExecutionException) { null }
if (timeout != null)
- continuation.cancelFutureOnCompletion(timeout)
+ continuation.cancelFutureOnCancellation(timeout)
else
DefaultExecutor.scheduleResumeAfterDelay(time, unit, continuation)
}
diff --git a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Future.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Future.kt
index 6909b99..3490d14 100644
--- a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Future.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Future.kt
@@ -41,7 +41,7 @@
@Deprecated(
message = "Disposable handlers on regular completion are no longer supported",
replaceWith = ReplaceWith("cancelFutureOnCancellation(future)"),
- level = DeprecationLevel.WARNING)
+ level = DeprecationLevel.HIDDEN)
public fun CancellableContinuation<*>.cancelFutureOnCompletion(future: Future<*>): DisposableHandle {
cancelFutureOnCancellation(future)
return NonDisposableHandle
diff --git a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
index 4ce28da..5db28ba 100644
--- a/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
+++ b/core/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/channels/AbstractChannel.kt
@@ -193,7 +193,7 @@
when (enqueueResult) {
null -> { // enqueued successfully
cont.initCancellability() // make it properly cancellable
- cont.removeOnCancel(send)
+ cont.removeOnCancellation(send)
return@sc
}
is Closed<*> -> {
@@ -769,8 +769,8 @@
// ------ private ------
private fun removeReceiveOnCancel(cont: CancellableContinuation<*>, receive: Receive<*>) {
- cont.invokeOnCompletion {
- if (cont.isCancelled && receive.remove())
+ cont.invokeOnCancellation {
+ if (receive.remove())
onReceiveDequeued()
}
}
diff --git a/integration/kotlinx-coroutines-guava/src/main/kotlin/kotlinx/coroutines/experimental/guava/ListenableFuture.kt b/integration/kotlinx-coroutines-guava/src/main/kotlin/kotlinx/coroutines/experimental/guava/ListenableFuture.kt
index 81bbbb5..cec625b 100644
--- a/integration/kotlinx-coroutines-guava/src/main/kotlin/kotlinx/coroutines/experimental/guava/ListenableFuture.kt
+++ b/integration/kotlinx-coroutines-guava/src/main/kotlin/kotlinx/coroutines/experimental/guava/ListenableFuture.kt
@@ -129,7 +129,7 @@
public suspend fun <T> ListenableFuture<T>.await(): T = suspendCancellableCoroutine { cont: CancellableContinuation<T> ->
val callback = ContinuationCallback(cont)
Futures.addCallback(this, callback)
- cont.invokeOnCompletion {
+ cont.invokeOnCancellation {
callback.cont = null // clear the reference to continuation from the future's callback
}
}
diff --git a/integration/kotlinx-coroutines-jdk8/src/main/kotlin/kotlinx/coroutines/experimental/future/Future.kt b/integration/kotlinx-coroutines-jdk8/src/main/kotlin/kotlinx/coroutines/experimental/future/Future.kt
index ee908e3..89846bd 100644
--- a/integration/kotlinx-coroutines-jdk8/src/main/kotlin/kotlinx/coroutines/experimental/future/Future.kt
+++ b/integration/kotlinx-coroutines-jdk8/src/main/kotlin/kotlinx/coroutines/experimental/future/Future.kt
@@ -176,7 +176,7 @@
return suspendCancellableCoroutine { cont: CancellableContinuation<T> ->
val consumer = ContinuationConsumer(cont)
whenComplete(consumer)
- cont.invokeOnCompletion {
+ cont.invokeOnCancellation {
consumer.cont = null // shall clear reference to continuation
}
}
diff --git a/integration/kotlinx-coroutines-nio/src/main/kotlin/kotlinx/coroutines/experimental/nio/Nio.kt b/integration/kotlinx-coroutines-nio/src/main/kotlin/kotlinx/coroutines/experimental/nio/Nio.kt
index 7fabfeb..fdcdee3 100644
--- a/integration/kotlinx-coroutines-nio/src/main/kotlin/kotlinx/coroutines/experimental/nio/Nio.kt
+++ b/integration/kotlinx-coroutines-nio/src/main/kotlin/kotlinx/coroutines/experimental/nio/Nio.kt
@@ -136,8 +136,7 @@
// ---------------- private details ----------------
private fun Channel.closeOnCancel(cont: CancellableContinuation<*>) {
- cont.invokeOnCompletion {
- if (cont.isCancelled)
+ cont.invokeOnCancellation {
try {
close()
} catch (ex: Throwable) {
diff --git a/integration/kotlinx-coroutines-quasar/src/main/kotlin/kotlinx/coroutines/experimental/quasar/Quasar.kt b/integration/kotlinx-coroutines-quasar/src/main/kotlin/kotlinx/coroutines/experimental/quasar/Quasar.kt
index a88ef8e..ff53e06 100644
--- a/integration/kotlinx-coroutines-quasar/src/main/kotlin/kotlinx/coroutines/experimental/quasar/Quasar.kt
+++ b/integration/kotlinx-coroutines-quasar/src/main/kotlin/kotlinx/coroutines/experimental/quasar/Quasar.kt
@@ -37,9 +37,7 @@
import co.paralleluniverse.fibers.SuspendExecution
import co.paralleluniverse.fibers.Suspendable
import co.paralleluniverse.strands.SuspendableCallable
-import kotlinx.coroutines.experimental.asCoroutineDispatcher
-import kotlinx.coroutines.experimental.cancelFutureOnCompletion
-import kotlinx.coroutines.experimental.suspendCancellableCoroutine
+import kotlinx.coroutines.experimental.*
import kotlin.coroutines.experimental.Continuation
import kotlin.coroutines.experimental.CoroutineContext
import kotlin.coroutines.experimental.startCoroutine
@@ -59,7 +57,7 @@
cont.resume(result)
}
}
- cont.cancelFutureOnCompletion(fiber)
+ cont.cancelFutureOnCancellation(fiber)
fiber.start()
}
diff --git a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Await.kt b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Await.kt
index 62a9cc6..f283ba0 100644
--- a/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Await.kt
+++ b/reactive/kotlinx-coroutines-reactive/src/main/kotlin/kotlinx/coroutines/experimental/reactive/Await.kt
@@ -111,7 +111,7 @@
override fun onSubscribe(sub: Subscription) {
subscription = sub
- cont.invokeOnCompletion { sub.cancel() }
+ cont.invokeOnCancellation { sub.cancel() }
sub.request(if (mode == Mode.FIRST) 1 else Long.MAX_VALUE)
}
diff --git a/reactive/kotlinx-coroutines-reactor/src/main/kotlin/kotlinx/coroutines/experimental/reactor/Scheduler.kt b/reactive/kotlinx-coroutines-reactor/src/main/kotlin/kotlinx/coroutines/experimental/reactor/Scheduler.kt
index f0d3d10..857df2c 100644
--- a/reactive/kotlinx-coroutines-reactor/src/main/kotlin/kotlinx/coroutines/experimental/reactor/Scheduler.kt
+++ b/reactive/kotlinx-coroutines-reactor/src/main/kotlin/kotlinx/coroutines/experimental/reactor/Scheduler.kt
@@ -24,7 +24,7 @@
val disposable = scheduler.schedule({
with(continuation) { resumeUndispatched(Unit) }
}, time, unit)
- continuation.disposeOnCompletion(disposable.asDisposableHandle())
+ continuation.disposeOnCancellation(disposable.asDisposableHandle())
}
override fun invokeOnTimeout(time: Long, unit: TimeUnit, block: Runnable): DisposableHandle =
diff --git a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxAwait.kt b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxAwait.kt
index b8e68a2..0a567a7 100644
--- a/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxAwait.kt
+++ b/reactive/kotlinx-coroutines-rx1/src/main/kotlin/kotlinx/coroutines/experimental/rx1/RxAwait.kt
@@ -137,5 +137,5 @@
}
internal fun <T> CancellableContinuation<T>.unsubscribeOnCompletion(sub: Subscription) {
- invokeOnCompletion { sub.unsubscribe() }
+ invokeOnCancellation { sub.unsubscribe() }
}
diff --git a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxAwait.kt b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxAwait.kt
index c8f8df9..d0a5167 100644
--- a/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxAwait.kt
+++ b/reactive/kotlinx-coroutines-rx2/src/main/kotlin/kotlinx/coroutines/experimental/rx2/RxAwait.kt
@@ -162,7 +162,7 @@
// ------------------------ private ------------------------
internal fun CancellableContinuation<*>.disposeOnCompletion(d: Disposable) =
- invokeOnCompletion { d.dispose() }
+ invokeOnCancellation { d.dispose() }
private enum class Mode(val s: String) {
FIRST("awaitFirst"),
@@ -183,7 +183,7 @@
override fun onSubscribe(sub: Disposable) {
subscription = sub
- cont.invokeOnCompletion { sub.dispose() }
+ cont.invokeOnCancellation { sub.dispose() }
}
override fun onNext(t: T) {
diff --git a/ui/kotlinx-coroutines-javafx/src/main/kotlin/kotlinx/coroutines/experimental/javafx/JavaFx.kt b/ui/kotlinx-coroutines-javafx/src/main/kotlin/kotlinx/coroutines/experimental/javafx/JavaFx.kt
index 21b35c8..3cec28b 100644
--- a/ui/kotlinx-coroutines-javafx/src/main/kotlin/kotlinx/coroutines/experimental/javafx/JavaFx.kt
+++ b/ui/kotlinx-coroutines-javafx/src/main/kotlin/kotlinx/coroutines/experimental/javafx/JavaFx.kt
@@ -58,7 +58,7 @@
val timeline = schedule(time, unit, EventHandler<ActionEvent> {
with(continuation) { resumeUndispatched(Unit) }
})
- continuation.invokeOnCompletion { timeline.stop() }
+ continuation.invokeOnCancellation { timeline.stop() }
}
override fun invokeOnTimeout(time: Long, unit: TimeUnit, block: Runnable): DisposableHandle {
diff --git a/ui/kotlinx-coroutines-swing/src/main/kotlin/kotlinx/coroutines/experimental/swing/Swing.kt b/ui/kotlinx-coroutines-swing/src/main/kotlin/kotlinx/coroutines/experimental/swing/Swing.kt
index 44695c6..a901c58 100644
--- a/ui/kotlinx-coroutines-swing/src/main/kotlin/kotlinx/coroutines/experimental/swing/Swing.kt
+++ b/ui/kotlinx-coroutines-swing/src/main/kotlin/kotlinx/coroutines/experimental/swing/Swing.kt
@@ -37,7 +37,7 @@
val timer = schedule(time, unit, ActionListener {
with(continuation) { resumeUndispatched(Unit) }
})
- continuation.invokeOnCompletion { timer.stop() }
+ continuation.invokeOnCancellation { timer.stop() }
}
override fun invokeOnTimeout(time: Long, unit: TimeUnit, block: Runnable): DisposableHandle {