diff --git a/libraries/stdlib/coroutines-experimental/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt b/libraries/stdlib/coroutines-experimental/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt index f21a20fafd6..61325b51e9d 100644 --- a/libraries/stdlib/coroutines-experimental/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt +++ b/libraries/stdlib/coroutines-experimental/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt @@ -116,11 +116,4 @@ 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() = CoroutineSingletons.COROUTINE_SUSPENDED - -// 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 -} +public actual val COROUTINE_SUSPENDED: Any get() = kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED diff --git a/libraries/stdlib/coroutines/js/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt b/libraries/stdlib/coroutines/js/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt index 02054e9ef10..626e1f9e5e4 100644 --- a/libraries/stdlib/coroutines/js/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt +++ b/libraries/stdlib/coroutines/js/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt @@ -127,3 +127,6 @@ private inline fun createCoroutineFromSuspendFunction( } } } + +@SinceKotlin("1.3") +public actual val COROUTINE_SUSPENDED: Any = CoroutineSingletons.COROUTINE_SUSPENDED \ No newline at end of file diff --git a/libraries/stdlib/coroutines/jvm/src/kotlin/coroutines/intrinsics/IntrinsicsJvm.kt b/libraries/stdlib/coroutines/jvm/src/kotlin/coroutines/intrinsics/IntrinsicsJvm.kt index 42df98afeb0..d7f9f616065 100644 --- a/libraries/stdlib/coroutines/jvm/src/kotlin/coroutines/intrinsics/IntrinsicsJvm.kt +++ b/libraries/stdlib/coroutines/jvm/src/kotlin/coroutines/intrinsics/IntrinsicsJvm.kt @@ -195,3 +195,12 @@ private inline fun createCoroutineFromSuspendFunction( } } } + +/** + * This value is used as a return value of [suspendCoroutineOrReturn] `block` argument to state that + * the execution was suspended and will not return any result immediately. + */ +// It is implemented as property with getter to avoid ProGuard problem with multifile IntrinsicsKt class +@SinceKotlin("1.3") +public actual val COROUTINE_SUSPENDED: Any + get() = CoroutineSingletons.COROUTINE_SUSPENDED diff --git a/libraries/stdlib/coroutines/src/kotlin/coroutines/intrinsics/Intrinsics.kt b/libraries/stdlib/coroutines/src/kotlin/coroutines/intrinsics/Intrinsics.kt index 51f55ca3c53..df5f0932fce 100644 --- a/libraries/stdlib/coroutines/src/kotlin/coroutines/intrinsics/Intrinsics.kt +++ b/libraries/stdlib/coroutines/src/kotlin/coroutines/intrinsics/Intrinsics.kt @@ -45,12 +45,11 @@ public suspend inline fun suspendCoroutineUninterceptedOrReturn(crossinline */ // It is implemented as property with getter to avoid ProGuard problem with multifile IntrinsicsKt class @SinceKotlin("1.3") -public val COROUTINE_SUSPENDED: Any - get() = kotlin.coroutines.experimental.intrinsics.COROUTINE_SUSPENDED +public expect val COROUTINE_SUSPENDED: Any // 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 @SinceKotlin("1.3") @PublishedApi // This class is Published API via serialized representation of SafeContinuation, don't rename/move -internal enum class CoroutineSingletons { UNDECIDED, RESUMED } +internal enum class CoroutineSingletons { COROUTINE_SUSPENDED, UNDECIDED, RESUMED } diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index ca0cbcd4a1e..b787dc1b230 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -2812,6 +2812,7 @@ public final class kotlin/coroutines/experimental/migration/CoroutinesMigrationK } public final class kotlin/coroutines/intrinsics/CoroutineSingletons : java/lang/Enum { + public static final field COROUTINE_SUSPENDED Lkotlin/coroutines/intrinsics/CoroutineSingletons; public static final field RESUMED Lkotlin/coroutines/intrinsics/CoroutineSingletons; public static final field UNDECIDED Lkotlin/coroutines/intrinsics/CoroutineSingletons; public static fun valueOf (Ljava/lang/String;)Lkotlin/coroutines/intrinsics/CoroutineSingletons;