Move coroutine intrinsics to kotlin.coroutine.intrinsics package
Also rename val SUSPENDED to SUSPENDED_MARKER #KT-15698 Fixed
This commit is contained in:
+16
-4
@@ -19,12 +19,24 @@ package org.jetbrains.kotlin.backend.common
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.DescriptorEquivalenceForOverrides
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
|
||||
val SUSPEND_WITH_CURRENT_CONTINUATION_NAME = Name.identifier("suspendWithCurrentContinuation")
|
||||
val SUSPEND_COROUTINE_OR_RETURN_NAME = Name.identifier("suspendCoroutineOrReturn")
|
||||
val CONTINUATION_RESUME_METHOD_NAME = Name.identifier("resume")
|
||||
val SUSPENDED_MARKER_NAME = Name.identifier("SUSPENDED_MARKER")
|
||||
|
||||
fun FunctionDescriptor.getBuiltInSuspendWithCurrentContinuation() =
|
||||
builtIns.builtInsCoroutinePackageFragment.getMemberScope()
|
||||
.getContributedFunctions(SUSPEND_WITH_CURRENT_CONTINUATION_NAME, NoLookupLocation.FROM_BACKEND)
|
||||
fun FunctionDescriptor.isBuiltInSuspendCoroutineOrReturn(): Boolean {
|
||||
if (name != SUSPEND_COROUTINE_OR_RETURN_NAME) return false
|
||||
|
||||
val originalDeclaration = getBuiltInSuspendCoroutineOrReturn() ?: return false
|
||||
|
||||
return DescriptorEquivalenceForOverrides.areEquivalent(
|
||||
originalDeclaration, this
|
||||
)
|
||||
}
|
||||
|
||||
fun FunctionDescriptor.getBuiltInSuspendCoroutineOrReturn() =
|
||||
builtIns.builtInsCoroutineIntrinsicsPackageFragment.getMemberScope()
|
||||
.getContributedFunctions(SUSPEND_COROUTINE_OR_RETURN_NAME, NoLookupLocation.FROM_BACKEND)
|
||||
.singleOrNull()
|
||||
|
||||
+10
-22
@@ -17,22 +17,20 @@
|
||||
package org.jetbrains.kotlin.codegen.coroutines
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.backend.common.SUSPEND_WITH_CURRENT_CONTINUATION_NAME
|
||||
import org.jetbrains.kotlin.backend.common.getBuiltInSuspendWithCurrentContinuation
|
||||
import org.jetbrains.kotlin.backend.common.SUSPENDED_MARKER_NAME
|
||||
import org.jetbrains.kotlin.backend.common.isBuiltInSuspendCoroutineOrReturn
|
||||
import org.jetbrains.kotlin.builtins.isBuiltinFunctionalType
|
||||
import org.jetbrains.kotlin.codegen.binding.CodegenBinding
|
||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.DescriptorEquivalenceForOverrides
|
||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
|
||||
@@ -175,22 +173,15 @@ private fun FunctionDescriptor.getContinuationParameterTypeOfSuspendFunction() =
|
||||
arguments = listOf(returnType!!.asTypeProjection())
|
||||
)
|
||||
|
||||
fun FunctionDescriptor.isBuiltInSuspendWithCurrentContinuation(): Boolean {
|
||||
if (name != SUSPEND_WITH_CURRENT_CONTINUATION_NAME) return false
|
||||
fun FunctionDescriptor.isBuiltInSuspendCoroutineOrReturnInJvm() =
|
||||
getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION)?.isBuiltInSuspendCoroutineOrReturn() == true
|
||||
|
||||
val originalDeclaration = getBuiltInSuspendWithCurrentContinuation() ?: return false
|
||||
|
||||
return DescriptorEquivalenceForOverrides.areEquivalent(
|
||||
originalDeclaration, this.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION)
|
||||
)
|
||||
}
|
||||
|
||||
fun createMethodNodeForSuspendWithCurrentContinuation(
|
||||
fun createMethodNodeForSuspendCoroutineOrReturn(
|
||||
functionDescriptor: FunctionDescriptor,
|
||||
typeMapper: KotlinTypeMapper
|
||||
): MethodNode {
|
||||
assert(functionDescriptor.isBuiltInSuspendWithCurrentContinuation()) {
|
||||
"functionDescriptor must be kotlin.coroutines.suspendWithCurrentContinuation"
|
||||
assert(functionDescriptor.isBuiltInSuspendCoroutineOrReturnInJvm()) {
|
||||
"functionDescriptor must be kotlin.coroutines.intrinsics.suspendOrReturn"
|
||||
}
|
||||
|
||||
val node =
|
||||
@@ -220,12 +211,9 @@ fun CallableDescriptor?.unwrapInitialDescriptorForSuspendFunction() =
|
||||
(this as? SimpleFunctionDescriptor)?.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION) ?: this
|
||||
|
||||
fun InstructionAdapter.loadSuspendMarker() {
|
||||
getstatic(
|
||||
AsmTypes.COROUTINES_INTRINSICS.internalName, JvmAbi.INSTANCE_FIELD, AsmTypes.COROUTINES_INTRINSICS.descriptor
|
||||
)
|
||||
invokevirtual(
|
||||
AsmTypes.COROUTINES_INTRINSICS.internalName,
|
||||
"getSUSPENDED",
|
||||
invokestatic(
|
||||
AsmTypes.COROUTINES_INTRINSICS_FILE_FACADE.internalName,
|
||||
"get$SUSPENDED_MARKER_NAME",
|
||||
Type.getMethodDescriptor(AsmTypes.OBJECT_TYPE),
|
||||
false
|
||||
)
|
||||
|
||||
@@ -248,9 +248,9 @@ public class InlineCodegen extends CallGenerator {
|
||||
);
|
||||
return new SMAPAndMethodNode(node, SMAPParser.parseOrCreateDefault(null, null, "fake", -1, -1));
|
||||
}
|
||||
else if (CoroutineCodegenUtilKt.isBuiltInSuspendWithCurrentContinuation(functionDescriptor)) {
|
||||
else if (CoroutineCodegenUtilKt.isBuiltInSuspendCoroutineOrReturnInJvm(functionDescriptor)) {
|
||||
return new SMAPAndMethodNode(
|
||||
CoroutineCodegenUtilKt.createMethodNodeForSuspendWithCurrentContinuation(
|
||||
CoroutineCodegenUtilKt.createMethodNodeForSuspendCoroutineOrReturn(
|
||||
functionDescriptor, codegen.getState().getTypeMapper()
|
||||
),
|
||||
SMAPParser.parseOrCreateDefault(null, null, "fake", -1, -1)
|
||||
|
||||
@@ -42,7 +42,7 @@ public class AsmTypes {
|
||||
public static final Type MUTABLE_PROPERTY_REFERENCE2 = Type.getObjectType("kotlin/jvm/internal/MutablePropertyReference2");
|
||||
public static final Type COROUTINE_IMPL = Type.getObjectType("kotlin/jvm/internal/CoroutineImpl");
|
||||
public static final Type RESTRICTED_COROUTINE_IMPL = Type.getObjectType("kotlin/jvm/internal/RestrictedCoroutineImpl");
|
||||
public static final Type COROUTINES_INTRINSICS = Type.getObjectType("kotlin/coroutines/CoroutineIntrinsics");
|
||||
public static final Type COROUTINES_INTRINSICS_FILE_FACADE = Type.getObjectType("kotlin/coroutines/intrinsics/IntrinsicsKt");
|
||||
public static final Type CONTINUATION = Type.getObjectType("kotlin/coroutines/Continuation");
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package-fragment kotlin.coroutines
|
||||
|
||||
@kotlin.PublishedApi internal inline suspend fun </*0*/ T> suspendWithCurrentContinuation(/*0*/ body: (kotlin.coroutines.Continuation<T>) -> kotlin.Any?): T
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") public interface Continuation</*0*/ in T> {
|
||||
public abstract fun resume(/*0*/ value: T): kotlin.Unit
|
||||
public abstract fun resumeWithException(/*0*/ exception: kotlin.Throwable): kotlin.Unit
|
||||
@@ -12,13 +10,6 @@ package-fragment kotlin.coroutines
|
||||
public open fun dispatchResumeWithException(/*0*/ exception: kotlin.Throwable, /*1*/ continuation: kotlin.coroutines.Continuation<*>): kotlin.Boolean
|
||||
}
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") public object CoroutineIntrinsics {
|
||||
/*primary*/ private constructor CoroutineIntrinsics()
|
||||
@kotlin.SinceKotlin(version = "1.1") public final val SUSPENDED: kotlin.Any
|
||||
public final fun <get-SUSPENDED>(): kotlin.Any
|
||||
public final inline suspend fun </*0*/ T> suspendCoroutineOrReturn(/*0*/ block: (kotlin.coroutines.Continuation<T>) -> kotlin.Any?): T
|
||||
}
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) public final annotation class RestrictsSuspension : kotlin.Annotation {
|
||||
/*primary*/ public constructor RestrictsSuspension()
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
+2
-1
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -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
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
+3
-2
@@ -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,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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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")
|
||||
|
||||
+1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-6
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -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) {
|
||||
|
||||
+3
-2
@@ -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) {
|
||||
|
||||
+3
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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,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
|
||||
|
||||
+3
-2
@@ -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
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-2
@@ -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
-2
@@ -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
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-2
@@ -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
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -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
-1
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user