From 6d027bbbfc9907a694d13dd064e5879fe65c2e58 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 19 Jun 2018 19:04:25 +0300 Subject: [PATCH] Remove state from parts of multifile classes Split COROUTINE_SUSPENDED marker to expect and actual because Kotlin/JS backend expects it to be property without getter. Update EXPECTED_REACHABLE_NODES in JS test data. #KT-24986 Fixed --- .../expression/typeCheck/simpleIsInterface.kt | 2 +- .../js/src/kotlin/coroutinesIntrinsics.kt | 10 +++++++ .../experimental/intrinsics/IntrinsicsJvm.kt | 9 ++++++ .../stdlib/jvm/src/kotlin/util/MathJVM.kt | 30 ++++++++++++++----- .../experimental/intrinsics/Intrinsics.kt | 3 +- 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt b/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt index 5f5d5a65c11..e0399ab5138 100644 --- a/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt +++ b/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt @@ -1,4 +1,4 @@ -// EXPECTED_REACHABLE_NODES: 1108 +// EXPECTED_REACHABLE_NODES: 1221 package foo diff --git a/libraries/stdlib/js/src/kotlin/coroutinesIntrinsics.kt b/libraries/stdlib/js/src/kotlin/coroutinesIntrinsics.kt index f8b39d1d58f..99f7a239771 100644 --- a/libraries/stdlib/js/src/kotlin/coroutinesIntrinsics.kt +++ b/libraries/stdlib/js/src/kotlin/coroutinesIntrinsics.kt @@ -32,3 +32,13 @@ public actual fun (suspend R.() -> T).createCoroutineUnchecked( public actual fun (suspend () -> T).createCoroutineUnchecked( completion: Continuation ): Continuation = this.asDynamic()(completion, true).facade + + +/** + * 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. + */ +@SinceKotlin("1.1") +public actual val COROUTINE_SUSPENDED: Any = CoroutineSuspendedMarker + +private object CoroutineSuspendedMarker \ No newline at end of file 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 63e426927bd..f846357af32 100644 --- a/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt +++ b/libraries/stdlib/jvm/src/kotlin/coroutines/experimental/intrinsics/IntrinsicsJvm.kt @@ -109,3 +109,12 @@ private inline fun buildContinuationByInvokeCall( return kotlin.coroutines.experimental.jvm.internal.interceptContinuationIfNeeded(completion.context, continuation) } + +/** + * 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. + */ +@SinceKotlin("1.1") +public actual val COROUTINE_SUSPENDED: Any get() = CoroutineSuspendedMarker + +private object CoroutineSuspendedMarker \ No newline at end of file diff --git a/libraries/stdlib/jvm/src/kotlin/util/MathJVM.kt b/libraries/stdlib/jvm/src/kotlin/util/MathJVM.kt index 59d7a3cd20b..8e29903c9e5 100644 --- a/libraries/stdlib/jvm/src/kotlin/util/MathJVM.kt +++ b/libraries/stdlib/jvm/src/kotlin/util/MathJVM.kt @@ -10,17 +10,33 @@ package kotlin.math import kotlin.* import kotlin.internal.InlineOnly +import kotlin.math.Constants.LN2 +import kotlin.math.Constants.taylor_2_bound +import kotlin.math.Constants.taylor_n_bound +import kotlin.math.Constants.upper_taylor_2_bound +import kotlin.math.Constants.upper_taylor_n_bound + + import java.lang.Math as nativeMath +private object Constants { // constants -/** Natural logarithm of 2.0, used to compute [log2] function */ -private val LN2: Double = ln(2.0) + /** Natural logarithm of 2.0, used to compute [log2] function */ + @JvmField + internal val LN2: Double = ln(2.0) -private val epsilon: Double = nativeMath.ulp(1.0) -private val taylor_2_bound = nativeMath.sqrt(epsilon) -private val taylor_n_bound = nativeMath.sqrt(taylor_2_bound) -private val upper_taylor_2_bound = 1 / taylor_2_bound -private val upper_taylor_n_bound = 1 / taylor_n_bound + @JvmField + internal val epsilon: Double = nativeMath.ulp(1.0) + @JvmField + internal val taylor_2_bound = nativeMath.sqrt(epsilon) + @JvmField + internal val taylor_n_bound = nativeMath.sqrt(taylor_2_bound) + @JvmField + internal val upper_taylor_2_bound = 1 / taylor_2_bound + @JvmField + internal val upper_taylor_n_bound = 1 / taylor_n_bound + +} // ================ Double Math ======================================== diff --git a/libraries/stdlib/src/kotlin/coroutines/experimental/intrinsics/Intrinsics.kt b/libraries/stdlib/src/kotlin/coroutines/experimental/intrinsics/Intrinsics.kt index 762a5f9a55c..57119d66c2e 100644 --- a/libraries/stdlib/src/kotlin/coroutines/experimental/intrinsics/Intrinsics.kt +++ b/libraries/stdlib/src/kotlin/coroutines/experimental/intrinsics/Intrinsics.kt @@ -57,5 +57,4 @@ public inline fun Continuation.intercepted(): Continuation = * the execution was suspended and will not return any result immediately. */ @SinceKotlin("1.1") -public val COROUTINE_SUSPENDED: Any = Any() - +public expect val COROUTINE_SUSPENDED: Any // get() = CoroutineSuspendedMarker