Move coroutine intrinsics to kotlin.coroutine.intrinsics package

Also rename val SUSPENDED to SUSPENDED_MARKER

 #KT-15698 Fixed
This commit is contained in:
Denis Zharkov
2017-01-13 15:43:50 +03:00
parent e0fa11b0c1
commit 2cb9d3a8ad
119 changed files with 446 additions and 348 deletions
+7 -6
View File
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
interface AsyncGenerator<in T> {
suspend fun yield(value: T)
@@ -33,18 +34,18 @@ class AsyncGeneratorIterator<T>: AsyncIterator<T>, AsyncGenerator<T>, Continuati
var computesNext = false
var computeContinuation: Continuation<*>? = null
suspend fun computeHasNext(): Boolean = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun computeHasNext(): Boolean = suspendCoroutineOrReturn { c ->
computesNext = false
computeContinuation = c
nextStep!!.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun computeNext(): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun computeNext(): T = suspendCoroutineOrReturn { c ->
computesNext = true
computeContinuation = c
nextStep!!.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
@Suppress("UNCHECKED_CAST")
@@ -90,12 +91,12 @@ class AsyncGeneratorIterator<T>: AsyncIterator<T>, AsyncGenerator<T>, Continuati
}
// Generator implementation
override suspend fun yield(value: T): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
override suspend fun yield(value: T): Unit = suspendCoroutineOrReturn { c ->
computedNext = true
nextValue = value
nextStep = c
resumeIterator(null)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -1
View File
@@ -2,6 +2,7 @@
// WITH_COROUTINES
// FILE: promise.kt
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Promise<T>(private val executor: ((T) -> Unit) -> Unit) {
private var value: Any? = null
@@ -49,6 +50,7 @@ fun processQueue() {
// FILE: await.kt
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
private var log = ""
@@ -65,7 +67,6 @@ suspend fun <S> await(value: Promise<S>): S = suspendCoroutine { continuation ->
}
}
inAwait = false
CoroutineIntrinsics.SUSPENDED
}
suspend fun <S> awaitAndLog(value: Promise<S>): S {
@@ -95,6 +96,7 @@ fun getLog() = log
// FILE: main.kt
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
private fun test() = async<String> {
val o = await(asyncOperation { "O" })
@@ -1,8 +1,9 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): Any = CoroutineIntrinsics.suspendCoroutineOrReturn { x -> }
suspend fun suspendHere(): Any = suspendCoroutineOrReturn { x -> }
fun builder(c: suspend () -> Unit) {
var exception: Throwable? = null
@@ -1,7 +1,8 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
suspend fun suspendHere(): Any = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->}
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): Any = suspendCoroutineOrReturn { x ->}
fun builder(c: suspend () -> Unit) {
try {
+3 -2
View File
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun <T> await(t: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> await(t: T): T = suspendCoroutineOrReturn { c ->
c.resume(t)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit): String {
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendAndLog(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendAndLog(value: T): T = suspendCoroutineOrReturn { c ->
result += "suspend($value);"
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,15 +1,16 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
result += "["
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,22 +1,23 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendAndLog(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendAndLog(value: T): T = suspendCoroutineOrReturn { c ->
result += "suspend($value);"
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
// Tail calls are not allowed to be Nothing typed. See KT-15051
suspend fun suspendLogAndThrow(exception: Throwable): Any? = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun suspendLogAndThrow(exception: Throwable): Any? = suspendCoroutineOrReturn { c ->
result += "throw(${exception.message});"
c.resumeWithException(exception)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,15 +1,16 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendAndLog(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendAndLog(value: T): T = suspendCoroutineOrReturn { c ->
result += "suspend($value);"
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
suspend fun <T> suspendWithResult(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { c ->
suspend fun <T> suspendWithResult(value: T): T = suspendCoroutineOrReturn { c ->
c.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,12 +1,13 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = false
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun foo() {
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(a: String = "abc", i: Int = 2): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(a: String = "abc", i: Int = 2): String = suspendCoroutineOrReturn { x ->
x.resume(a + "#" + (i + 1))
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+5 -4
View File
@@ -1,21 +1,22 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var log = ""
var resumeIndex = 0
suspend fun <T> suspendWithValue(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { continuation ->
suspend fun <T> suspendWithValue(value: T): T = suspendCoroutineOrReturn { continuation ->
log += "suspend($value);"
continuation.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(value: String): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { continuation ->
suspend fun suspendWithException(value: String): Unit = suspendCoroutineOrReturn { continuation ->
log += "error($value);"
continuation.resumeWithException(RuntimeException(value))
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -2
View File
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var result = 0
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
result++
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun <T> suspendHere(v: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun <T> suspendHere(v: T): T = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -2
View File
@@ -2,6 +2,7 @@
// WITH_COROUTINES
// FULL_JDK
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun box(): String {
val x = gen().joinToString()
@@ -50,10 +51,10 @@ class GeneratedIterator<T>(block: suspend Generator<T>.() -> Unit) : AbstractIte
override fun computeNext() {
nextStep.resume(Unit)
}
suspend override fun yield(value: T) = CoroutineIntrinsics.suspendCoroutineOrReturn<Unit> { c ->
suspend override fun yield(value: T) = suspendCoroutineOrReturn<Unit> { c ->
setNext(value)
nextStep = c
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,25 +1,26 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var exception: Throwable? = null
val postponedActions = ArrayList<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> Unit) {
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun builder(c: suspend () -> Unit): String {
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var log = ""
suspend fun <T> suspendAndLog(value: T): T = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun <T> suspendAndLog(value: T): T = suspendCoroutineOrReturn { x ->
log += "suspend($value);"
x.resume(value)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -2
View File
@@ -2,10 +2,11 @@
// WITH_COROUTINES
// TARGET_BACKEND: JVM
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder1(c: suspend () -> Unit) {
@@ -5,15 +5,16 @@
// CHECK_NOT_CALLED: suspendInline_6r51u9$
// CHECK_NOT_CALLED: suspendInline
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
fun withValue(v: String, x: Continuation<String>) {
x.resume(v)
}
suspend inline fun suspendInline(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend inline fun suspendInline(v: String): String = suspendCoroutineOrReturn { x ->
withValue(v, x)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend inline fun suspendInline(crossinline b: () -> String): String = suspendInline(b())
@@ -1,26 +1,27 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
var wasCalled = false
class Controller {
val postponedActions = mutableListOf<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> String) {
@@ -1,12 +1,13 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var i = 0
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume((i++).toString())
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,18 +2,19 @@
// WITH_COROUTINES
// WITH_REFLECT
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun runInstanceOf(): Boolean = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun runInstanceOf(): Boolean = suspendCoroutineOrReturn { x ->
val y: Any = x
x.resume(x is Continuation<*>)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun runCast(): Boolean = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun runCast(): Boolean = suspendCoroutineOrReturn { x ->
val y: Any = x
x.resume(Continuation::class.isInstance(y as Continuation<*>))
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TARGET_BACKEND: JVM
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TARGET_BACKEND: JVM
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -2
View File
@@ -2,10 +2,11 @@
// WITH_COROUTINES
// WITH_CONTINUATION
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun <V> suspendHere(v: V): V = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun <V> suspendHere(v: V): V = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> String): String {
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var result = ""
var ok = false
suspend fun suspendHere(v: String): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: String): Unit = suspendCoroutineOrReturn { x ->
result += v
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,14 +1,15 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var ok = false
var v = "fail"
suspend fun suspendHere(v: String): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: String): Unit = suspendCoroutineOrReturn { x ->
this.v = v
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -9,6 +9,7 @@ inline fun foo(x: String = "OK"): String {
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var result = ""
@@ -5,11 +5,12 @@
package lib
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -17,6 +18,7 @@ class Controller {
// FILE: main.kt
import lib.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun builder(c: suspend Controller.() -> Unit) {
c.startCoroutine(Controller(), EmptyContinuation)
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var lastSuspension: Continuation<String>? = null
var result = "fail"
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
lastSuspension = x
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun hasNext() = lastSuspension != null
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var lastSuspension: Continuation<String>? = null
var result = "fail"
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
lastSuspension = x
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun hasNext() = lastSuspension != null
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var lastSuspension: Continuation<String>? = null
var result = "fail"
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
lastSuspension = x
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun hasNext() = lastSuspension != null
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var lastSuspension: Continuation<String>? = null
var result = "fail"
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
lastSuspension = x
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun hasNext() = lastSuspension != null
+5 -4
View File
@@ -1,26 +1,27 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
var wasCalled = false
class Controller {
val postponedActions = ArrayList<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> String) {
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun builder(c: suspend () -> Int): Int {
@@ -1,12 +1,13 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var cResult = 0
suspend fun suspendHere(v: Int): Int = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: Int): Int = suspendCoroutineOrReturn { x ->
x.resume(v * 2)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var cResult = 0
suspend fun suspendHere(v: Int): Int = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: Int): Int = suspendCoroutineOrReturn { x ->
x.resume(v * 2)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
+3 -2
View File
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Int): Int {
+3 -2
View File
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resumeWithException(RuntimeException("OK"))
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Int): Int {
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = throw RuntimeException("OK")
@@ -5,6 +5,7 @@
// CHECK_NOT_CALLED: suspendInline_6r51u9$
// CHECK_NOT_CALLED: suspendInline
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend inline fun suspendInline(v: String): String = v
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere() = "OK"
@@ -1,12 +1,13 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Int = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Int = suspendCoroutineOrReturn { x ->
1
}
suspend fun suspendThere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendThere(): String = suspendCoroutineOrReturn { x ->
"?"
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> String) {
@@ -1,13 +1,14 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = suspendThere()
suspend fun suspendThere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendThere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(v: Int): Int = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: Int): Int = suspendCoroutineOrReturn { x ->
x.resume(v * 2)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: String): String = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: String): String = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
+5 -4
View File
@@ -1,16 +1,17 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
var i = 0
suspend fun suspendHere(): Int = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Int = suspendCoroutineOrReturn { x ->
x.resume(i++)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendThere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendThere(): String = suspendCoroutineOrReturn { x ->
x.resume("?")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,21 +1,22 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("K")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithArgument(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithArgument(v: String): String = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithDouble(v: Double): Double = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithDouble(v: Double): Double = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,26 +1,27 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
var wasCalled = false
class Controller {
val postponedActions = ArrayList<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> String) {
@@ -1,26 +1,27 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
var wasCalled = false
class Controller {
val postponedActions = ArrayList<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> String) {
@@ -1,12 +1,13 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(v: String): String = suspendCoroutineOrReturn { x ->
x.resume(v)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,26 +1,27 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var globalResult = ""
var wasCalled = false
class Controller {
val postponedActions = mutableListOf<() -> Unit>()
suspend fun suspendWithValue(v: String): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithValue(v: String): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resume(v)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
suspend fun suspendWithException(e: Exception): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendWithException(e: Exception): String = suspendCoroutineOrReturn { x ->
postponedActions.add {
x.resumeWithException(e)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun run(c: suspend Controller.() -> String) {
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -1,10 +1,11 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
fun builder(c: suspend () -> Unit) {
@@ -2,6 +2,7 @@
// WITH_COROUTINES
// IGNORE_BACKEND: JS
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var result = "0"
@@ -13,9 +14,9 @@ suspend fun suspendHere(x: Int): Unit {
}
result = "OK"
return CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
return suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,15 +1,16 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
var result = "0"
suspend fun suspendHere(x: Int): Unit {
if (x == 0) return
result = "OK"
return CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
return suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,11 +1,12 @@
// WITH_RUNTIME
// WITH_COROUTINES
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -1,7 +1,8 @@
// WITH_RUNTIME
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere() = CoroutineIntrinsics.suspendCoroutineOrReturn<String> { x ->
suspend fun suspendHere() = suspendCoroutineOrReturn<String> { x ->
x.resume("OK")
}
}
+2 -2
View File
@@ -2,6 +2,7 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere() = ""
fun builder(c: suspend () -> Unit) {
@@ -21,5 +22,4 @@ fun box(): String {
// 2 GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;
// 1 GETSTATIC EmptyContinuation.INSTANCE
// 2 GETSTATIC kotlin/coroutines/CoroutineIntrinsics.INSTANCE
// 5 GETSTATIC
// 3 GETSTATIC
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -3,11 +3,12 @@
// TREAT_AS_ONE_FILE
// TARGET_BACKEND: JVM
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -3,11 +3,12 @@
// TREAT_AS_ONE_FILE
// TARGET_BACKEND: JVM
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,11 +2,12 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
class Controller {
suspend fun suspendHere(): Unit = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
suspend fun suspendHere(): Unit = suspendCoroutineOrReturn { x ->
x.resume(Unit)
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
}
@@ -2,7 +2,8 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
}
@@ -2,7 +2,8 @@
// WITH_COROUTINES
// TREAT_AS_ONE_FILE
import kotlin.coroutines.*
suspend fun suspendHere(): String = CoroutineIntrinsics.suspendCoroutineOrReturn { x ->
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
}
+3 -2
View File
@@ -3,6 +3,7 @@
import java.util.concurrent.CompletableFuture
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun foo(): CompletableFuture<String> = CompletableFuture.supplyAsync { "foo" }
fun bar(v: String): CompletableFuture<String> = CompletableFuture.supplyAsync { "bar with $v" }
@@ -58,12 +59,12 @@ fun <T> async(c: suspend () -> T): CompletableFuture<T> {
return future
}
suspend fun <V> await(f: CompletableFuture<V>) = CoroutineIntrinsics.suspendCoroutineOrReturn<V> { machine ->
suspend fun <V> await(f: CompletableFuture<V>) = suspendCoroutineOrReturn<V> { machine ->
f.whenComplete { value, throwable ->
if (throwable == null)
machine.resume(value)
else
machine.resumeWithException(throwable)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}
+3 -2
View File
@@ -3,6 +3,7 @@
import java.util.concurrent.CompletableFuture
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun exception(v: String): CompletableFuture<String> = CompletableFuture.supplyAsync { throw RuntimeException(v) }
@@ -55,12 +56,12 @@ fun <T> async(c: suspend () -> T): CompletableFuture<T> {
return future
}
suspend fun <V> await(f: CompletableFuture<V>) = CoroutineIntrinsics.suspendCoroutineOrReturn<V> { machine ->
suspend fun <V> await(f: CompletableFuture<V>) = suspendCoroutineOrReturn<V> { machine ->
f.whenComplete { value, throwable ->
if (throwable == null)
machine.resume(value)
else
machine.resumeWithException(throwable)
}
CoroutineIntrinsics.SUSPENDED
SUSPENDED_MARKER
}