diff --git a/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt b/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt index f846357af32..f5237129fbe 100644 --- a/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt +++ b/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt @@ -115,6 +115,11 @@ private inline fun buildContinuationByInvokeCall( * the execution was suspended and will not return any result immediately. */ @SinceKotlin("1.1") -public actual val COROUTINE_SUSPENDED: Any get() = CoroutineSuspendedMarker +public actual val COROUTINE_SUSPENDED: Any get() = CoroutineSingletons.COROUTINE_SUSPENDED -private object CoroutineSuspendedMarker \ No newline at end of file +// Using enum here ensures two important properties: +// 1. It makes SafeContinuation serializable with all kinds of serialization frameworks (since all of them natively support enums) +// 2. It improves debugging experience, since you clearly see toString() value of those objects and what package they come from +private enum class CoroutineSingletons { + COROUTINE_SUSPENDED +}