Skip to content

Commit b209e9b

Browse files
committed
Removed legacy onFinishing handler support from JobSupport
It is no longer needed, because handleJobException covers #208
1 parent bfd393d commit b209e9b

File tree

2 files changed

+4
-25
lines changed

2 files changed

+4
-25
lines changed

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

-8
Original file line numberDiff line numberDiff line change
@@ -210,17 +210,9 @@ private open class StandaloneCoroutine(
210210
private val parentContext: CoroutineContext,
211211
active: Boolean
212212
) : AbstractCoroutine<Unit>(parentContext, active) {
213-
override fun hasOnFinishingHandler(update: Any?) = update is CompletedExceptionally
214-
215213
override fun handleJobException(exception: Throwable) {
216214
handleCoroutineException(parentContext, exception, this)
217215
}
218-
219-
override fun onFinishingInternal(update: Any?) {
220-
if (update is CompletedExceptionally && update.cause !is CancellationException) {
221-
parentContext[Job]?.cancel(update.cause)
222-
}
223-
}
224216
}
225217

226218
private class LazyStandaloneCoroutine(

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

+4-17
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,6 @@ internal open class JobSupport constructor(active: Boolean) : Job, SelectClause0
640640
private fun tryMakeCancelling(expect: Incomplete, list: NodeList, cause: Throwable?): Boolean {
641641
val cancelled = Cancelled(this, cause)
642642
if (!_state.compareAndSet(expect, Finishing(list, cancelled, false))) return false
643-
onFinishingInternal(cancelled)
644643
onCancellationInternal(cancelled)
645644
// Materialize cause
646645
notifyCancellation(list, cancelled.cause)
@@ -679,10 +678,10 @@ internal open class JobSupport constructor(active: Boolean) : Job, SelectClause0
679678
if (state is Finishing && state.completing)
680679
return COMPLETING_ALREADY_COMPLETING
681680
val child: ChildJob? = firstChild(state) ?: // or else complete immediately w/o children
682-
when {
683-
state !is Finishing && hasOnFinishingHandler(proposedUpdate) -> null // unless it has onFinishing handler
684-
tryFinalizeState(state, proposedUpdate, mode) -> return COMPLETING_COMPLETED
685-
else -> return@loopOnState
681+
if (tryFinalizeState(state, proposedUpdate, mode)) {
682+
return COMPLETING_COMPLETED
683+
} else {
684+
return@loopOnState // retry
686685
}
687686
val list = state.list ?: // must promote to list to correctly operate on child lists
688687
when (state) {
@@ -704,7 +703,6 @@ internal open class JobSupport constructor(active: Boolean) : Job, SelectClause0
704703
val completing = Finishing(list, cancelled, true)
705704
if (_state.compareAndSet(state, completing)) {
706705
(state as? Finishing)?.transferExceptions(completing)
707-
if (state !is Finishing) onFinishingInternal(proposedUpdate)
708706
if (child != null && tryWaitForChild(child, proposedUpdate))
709707
return COMPLETING_WAITING_CHILDREN
710708
if (tryFinalizeState(completing, proposedUpdate, mode = MODE_ATOMIC_DEFAULT))
@@ -800,17 +798,6 @@ internal open class JobSupport constructor(active: Boolean) : Job, SelectClause0
800798
// TODO rename to "onCancelling"
801799
}
802800

803-
/**
804-
* Whether job has [onFinishingInternal] handler for given [update]
805-
* @suppress **This is unstable API and it is subject to change.**
806-
*/
807-
internal open fun hasOnFinishingHandler(update: Any?) = false
808-
809-
/**
810-
* @suppress **This is unstable API and it is subject to change.**
811-
*/
812-
internal open fun onFinishingInternal(update: Any?) {}
813-
814801
/**
815802
* Method which is invoked once Job becomes [Cancelled] or [CompletedExceptionally].
816803
* It's guaranteed that at the moment of invocation the job and all its children are complete.

0 commit comments

Comments
 (0)