Add coroutines debug metadata: compiler
#KT-25557 Fixed #KT-25559 Fixed
This commit is contained in:
committed by
Ilya Gorbunov
parent
c4287118d8
commit
22f9a6ce08
@@ -432,7 +432,8 @@ class CoroutineCodegenForLambda private constructor(
|
|||||||
shouldPreserveClassInitialization = constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
shouldPreserveClassInitialization = constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
||||||
containingClassInternalName = v.thisName,
|
containingClassInternalName = v.thisName,
|
||||||
isForNamedFunction = false,
|
isForNamedFunction = false,
|
||||||
languageVersionSettings = languageVersionSettings
|
languageVersionSettings = languageVersionSettings,
|
||||||
|
sourceFile = element.containingFile.name
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,7 +512,7 @@ class CoroutineCodegenForNamedFunction private constructor(
|
|||||||
|
|
||||||
v.newField(
|
v.newField(
|
||||||
JvmDeclarationOrigin.NO_ORIGIN, Opcodes.ACC_SYNTHETIC or AsmUtil.NO_FLAG_PACKAGE_PRIVATE,
|
JvmDeclarationOrigin.NO_ORIGIN, Opcodes.ACC_SYNTHETIC or AsmUtil.NO_FLAG_PACKAGE_PRIVATE,
|
||||||
DATA_FIELD_NAME, AsmTypes.OBJECT_TYPE.descriptor, null, null
|
languageVersionSettings.dataFieldName(), AsmTypes.OBJECT_TYPE.descriptor, null, null
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!languageVersionSettings.isReleaseCoroutines()) {
|
if (!languageVersionSettings.isReleaseCoroutines()) {
|
||||||
@@ -529,7 +530,7 @@ class CoroutineCodegenForNamedFunction private constructor(
|
|||||||
object : FunctionGenerationStrategy.CodegenBased(state) {
|
object : FunctionGenerationStrategy.CodegenBased(state) {
|
||||||
override fun doGenerateBody(codegen: ExpressionCodegen, signature: JvmMethodSignature) {
|
override fun doGenerateBody(codegen: ExpressionCodegen, signature: JvmMethodSignature) {
|
||||||
StackValue.field(
|
StackValue.field(
|
||||||
AsmTypes.OBJECT_TYPE, Type.getObjectType(v.thisName), DATA_FIELD_NAME, false,
|
AsmTypes.OBJECT_TYPE, Type.getObjectType(v.thisName), languageVersionSettings.dataFieldName(), false,
|
||||||
StackValue.LOCAL_0
|
StackValue.LOCAL_0
|
||||||
).store(StackValue.local(1, AsmTypes.OBJECT_TYPE), codegen.v)
|
).store(StackValue.local(1, AsmTypes.OBJECT_TYPE), codegen.v)
|
||||||
|
|
||||||
|
|||||||
+69
-5
@@ -47,10 +47,13 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
private val shouldPreserveClassInitialization: Boolean,
|
private val shouldPreserveClassInitialization: Boolean,
|
||||||
private val lineNumber: Int,
|
private val lineNumber: Int,
|
||||||
private val languageVersionSettings: LanguageVersionSettings,
|
private val languageVersionSettings: LanguageVersionSettings,
|
||||||
|
private val sourceFile: String,
|
||||||
// It's only matters for named functions, may differ from '!isStatic(access)' in case of DefaultImpls
|
// It's only matters for named functions, may differ from '!isStatic(access)' in case of DefaultImpls
|
||||||
private val needDispatchReceiver: Boolean = false,
|
private val needDispatchReceiver: Boolean = false,
|
||||||
// May differ from containingClassInternalName in case of DefaultImpls
|
// May differ from containingClassInternalName in case of DefaultImpls
|
||||||
private val internalNameForDispatchReceiver: String? = null
|
private val internalNameForDispatchReceiver: String? = null,
|
||||||
|
// For crossinline lambdas we do not generate DebugMetadata annotation, otherwise it will be generated twice
|
||||||
|
private val isCrossinlineLambda: Boolean = false
|
||||||
) : TransformationMethodVisitor(delegate, access, name, desc, signature, exceptions) {
|
) : TransformationMethodVisitor(delegate, access, name, desc, signature, exceptions) {
|
||||||
|
|
||||||
private val classBuilderForCoroutineState: ClassBuilder by lazy(obtainClassBuilderForCoroutineState)
|
private val classBuilderForCoroutineState: ClassBuilder by lazy(obtainClassBuilderForCoroutineState)
|
||||||
@@ -109,7 +112,7 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
|
|
||||||
UninitializedStoresProcessor(methodNode, shouldPreserveClassInitialization).run()
|
UninitializedStoresProcessor(methodNode, shouldPreserveClassInitialization).run()
|
||||||
|
|
||||||
spillVariables(suspensionPoints, methodNode)
|
val spilledToVariableMapping = spillVariables(suspensionPoints, methodNode)
|
||||||
|
|
||||||
val suspendMarkerVarIndex = methodNode.maxLocals++
|
val suspendMarkerVarIndex = methodNode.maxLocals++
|
||||||
|
|
||||||
@@ -118,9 +121,9 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val defaultLabel = LabelNode()
|
val defaultLabel = LabelNode()
|
||||||
|
val tableSwitchLabel = LabelNode()
|
||||||
methodNode.instructions.apply {
|
methodNode.instructions.apply {
|
||||||
val startLabel = LabelNode()
|
val startLabel = LabelNode()
|
||||||
val tableSwitchLabel = LabelNode()
|
|
||||||
|
|
||||||
// tableswitch(this.label)
|
// tableswitch(this.label)
|
||||||
insertBefore(
|
insertBefore(
|
||||||
@@ -164,6 +167,45 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
defaultLabel
|
defaultLabel
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (languageVersionSettings.isReleaseCoroutines() && !isCrossinlineLambda) {
|
||||||
|
val suspensionPointLabelNodes = listOf(tableSwitchLabel) + suspensionPointLabels.map {
|
||||||
|
it.label.info.safeAs<LabelNode>()
|
||||||
|
.sure { "suspensionPointLabel shall have valid info. Check state-machine generation." }
|
||||||
|
}
|
||||||
|
writeDebugMetadata(methodNode, suspensionPointLabelNodes, spilledToVariableMapping)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun writeDebugMetadata(
|
||||||
|
methodNode: MethodNode,
|
||||||
|
suspensionPointLabels: List<LabelNode>,
|
||||||
|
spilledToLocalMapping: List<List<SpilledVariableDescriptor>>
|
||||||
|
) {
|
||||||
|
val lines = suspensionPointLabels.map { label ->
|
||||||
|
label.safeAs<AbstractInsnNode>()?.findNextOrNull { it is LineNumberNode }.safeAs<LineNumberNode>()?.line ?: -1
|
||||||
|
}
|
||||||
|
val metadata = classBuilderForCoroutineState.newAnnotation(DEBUG_METADATA_ANNOTATION_ASM_TYPE.descriptor, true)
|
||||||
|
// TODO: support inlined functions (similar to SMAP)
|
||||||
|
metadata.visitArray("sourceFiles").also { v ->
|
||||||
|
lines.forEach { v.visit(null, sourceFile) }
|
||||||
|
}.visitEnd()
|
||||||
|
metadata.visit("lineNumbers", lines.toIntArray())
|
||||||
|
|
||||||
|
val debugIndexToLabel = spilledToLocalMapping.withIndex().flatMap { (labelIndex, list) ->
|
||||||
|
list.map { labelIndex }
|
||||||
|
}
|
||||||
|
val variablesMapping = spilledToLocalMapping.flatten()
|
||||||
|
metadata.visit("indexToLabel", debugIndexToLabel.toIntArray())
|
||||||
|
metadata.visitArray("spilled").also { v ->
|
||||||
|
variablesMapping.forEach { v.visit(null, it.fieldName) }
|
||||||
|
}.visitEnd()
|
||||||
|
metadata.visitArray("localNames").also { v ->
|
||||||
|
variablesMapping.forEach { v.visit(null, it.variableName) }
|
||||||
|
}.visitEnd()
|
||||||
|
metadata.visit("methodName", methodNode.name)
|
||||||
|
metadata.visit("className", containingClassInternalName)
|
||||||
|
metadata.visitEnd()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addContinuationToLvt(methodNode: MethodNode, startLabel: LabelNode, endLabel: LabelNode) {
|
private fun addContinuationToLvt(methodNode: MethodNode, startLabel: LabelNode, endLabel: LabelNode) {
|
||||||
@@ -307,7 +349,7 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
visitLabel(afterCoroutineStateCreated)
|
visitLabel(afterCoroutineStateCreated)
|
||||||
|
|
||||||
visitVarInsn(Opcodes.ALOAD, continuationIndex)
|
visitVarInsn(Opcodes.ALOAD, continuationIndex)
|
||||||
getfield(classBuilderForCoroutineState.thisName, DATA_FIELD_NAME, AsmTypes.OBJECT_TYPE.descriptor)
|
getfield(classBuilderForCoroutineState.thisName, languageVersionSettings.dataFieldName(), AsmTypes.OBJECT_TYPE.descriptor)
|
||||||
visitVarInsn(Opcodes.ASTORE, dataIndex)
|
visitVarInsn(Opcodes.ASTORE, dataIndex)
|
||||||
|
|
||||||
if (!languageVersionSettings.isReleaseCoroutines()) {
|
if (!languageVersionSettings.isReleaseCoroutines()) {
|
||||||
@@ -364,7 +406,7 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun spillVariables(suspensionPoints: List<SuspensionPoint>, methodNode: MethodNode) {
|
private fun spillVariables(suspensionPoints: List<SuspensionPoint>, methodNode: MethodNode): List<List<SpilledVariableDescriptor>> {
|
||||||
val instructions = methodNode.instructions
|
val instructions = methodNode.instructions
|
||||||
val frames = performRefinedTypeAnalysis(methodNode, containingClassInternalName)
|
val frames = performRefinedTypeAnalysis(methodNode, containingClassInternalName)
|
||||||
fun AbstractInsnNode.index() = instructions.indexOf(this)
|
fun AbstractInsnNode.index() = instructions.indexOf(this)
|
||||||
@@ -373,6 +415,7 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
val postponedActions = mutableListOf<() -> Unit>()
|
val postponedActions = mutableListOf<() -> Unit>()
|
||||||
val maxVarsCountByType = mutableMapOf<Type, Int>()
|
val maxVarsCountByType = mutableMapOf<Type, Int>()
|
||||||
val livenessFrames = analyzeLiveness(methodNode)
|
val livenessFrames = analyzeLiveness(methodNode)
|
||||||
|
val spilledToVariableMapping = arrayListOf<List<SpilledVariableDescriptor>>()
|
||||||
|
|
||||||
for (suspension in suspensionPoints) {
|
for (suspension in suspensionPoints) {
|
||||||
val suspensionCallBegin = suspension.suspensionCallBegin
|
val suspensionCallBegin = suspension.suspensionCallBegin
|
||||||
@@ -399,6 +442,8 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
// NB: it's also rather useful for sake of optimization
|
// NB: it's also rather useful for sake of optimization
|
||||||
val livenessFrame = livenessFrames[suspensionCallBegin.index()]
|
val livenessFrame = livenessFrames[suspensionCallBegin.index()]
|
||||||
|
|
||||||
|
val spilledToVariable = arrayListOf<SpilledVariableDescriptor>()
|
||||||
|
|
||||||
// 0 - this
|
// 0 - this
|
||||||
// 1 - parameter
|
// 1 - parameter
|
||||||
// ...
|
// ...
|
||||||
@@ -434,6 +479,8 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
varsCountByType[normalizedType] = indexBySort
|
varsCountByType[normalizedType] = indexBySort
|
||||||
|
|
||||||
val fieldName = normalizedType.fieldNameForVar(indexBySort)
|
val fieldName = normalizedType.fieldNameForVar(indexBySort)
|
||||||
|
localVariableName(methodNode, index, suspension.suspensionCallEnd.next.index())
|
||||||
|
?.let { spilledToVariable.add(SpilledVariableDescriptor(fieldName, it)) }
|
||||||
|
|
||||||
postponedActions.add {
|
postponedActions.add {
|
||||||
with(instructions) {
|
with(instructions) {
|
||||||
@@ -456,6 +503,8 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spilledToVariableMapping.add(spilledToVariable)
|
||||||
|
|
||||||
varsCountByType.forEach {
|
varsCountByType.forEach {
|
||||||
maxVarsCountByType[it.key] = Math.max(maxVarsCountByType[it.key] ?: 0, it.value)
|
maxVarsCountByType[it.key] = Math.max(maxVarsCountByType[it.key] ?: 0, it.value)
|
||||||
}
|
}
|
||||||
@@ -472,6 +521,19 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return spilledToVariableMapping
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun localVariableName(
|
||||||
|
methodNode: MethodNode,
|
||||||
|
index: Int,
|
||||||
|
suspensionCallIndex: Int
|
||||||
|
): String? {
|
||||||
|
val variable = methodNode.localVariables.find {
|
||||||
|
index == it.index && methodNode.instructions.indexOf(it.start) <= suspensionCallIndex
|
||||||
|
&& suspensionCallIndex < methodNode.instructions.indexOf(it.end)
|
||||||
|
}
|
||||||
|
return variable?.name
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -637,6 +699,8 @@ class CoroutineTransformerMethodVisitor(
|
|||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private data class SpilledVariableDescriptor(val fieldName: String, val variableName: String)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun InstructionAdapter.generateContinuationConstructorCall(
|
internal fun InstructionAdapter.generateContinuationConstructorCall(
|
||||||
|
|||||||
+2
-1
@@ -70,7 +70,8 @@ open class SuspendFunctionGenerationStrategy(
|
|||||||
shouldPreserveClassInitialization = constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
shouldPreserveClassInitialization = constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
||||||
needDispatchReceiver = originalSuspendDescriptor.dispatchReceiverParameter != null,
|
needDispatchReceiver = originalSuspendDescriptor.dispatchReceiverParameter != null,
|
||||||
internalNameForDispatchReceiver = containingClassInternalNameOrNull(),
|
internalNameForDispatchReceiver = containingClassInternalNameOrNull(),
|
||||||
languageVersionSettings = languageVersionSettings
|
languageVersionSettings = languageVersionSettings,
|
||||||
|
sourceFile = declaration.containingFile.name
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -54,20 +54,26 @@ const val COROUTINE_LABEL_FIELD_NAME = "label"
|
|||||||
const val SUSPEND_FUNCTION_CREATE_METHOD_NAME = "create"
|
const val SUSPEND_FUNCTION_CREATE_METHOD_NAME = "create"
|
||||||
const val DO_RESUME_METHOD_NAME = "doResume"
|
const val DO_RESUME_METHOD_NAME = "doResume"
|
||||||
const val INVOKE_SUSPEND_METHOD_NAME = "invokeSuspend"
|
const val INVOKE_SUSPEND_METHOD_NAME = "invokeSuspend"
|
||||||
const val DATA_FIELD_NAME = "data"
|
|
||||||
const val EXCEPTION_FIELD_NAME = "exception"
|
const val EXCEPTION_FIELD_NAME = "exception"
|
||||||
|
|
||||||
|
private val RELEASE_COROUTINES_VERSION_SETTINGS = LanguageVersionSettingsImpl(LanguageVersion.KOTLIN_1_3, ApiVersion.KOTLIN_1_3)
|
||||||
|
|
||||||
fun LanguageVersionSettings.isResumeImplMethodName(name: String) =
|
fun LanguageVersionSettings.isResumeImplMethodName(name: String) =
|
||||||
if (isReleaseCoroutines())
|
if (isReleaseCoroutines())
|
||||||
name == INVOKE_SUSPEND_METHOD_NAME
|
name == INVOKE_SUSPEND_METHOD_NAME
|
||||||
else
|
else
|
||||||
name == DO_RESUME_METHOD_NAME
|
name == DO_RESUME_METHOD_NAME
|
||||||
|
|
||||||
|
fun LanguageVersionSettings.dataFieldName(): String = if (isReleaseCoroutines()) "result" else "data"
|
||||||
|
|
||||||
fun isResumeImplMethodNameFromAnyLanguageSettings(name: String) = name == INVOKE_SUSPEND_METHOD_NAME || name == DO_RESUME_METHOD_NAME
|
fun isResumeImplMethodNameFromAnyLanguageSettings(name: String) = name == INVOKE_SUSPEND_METHOD_NAME || name == DO_RESUME_METHOD_NAME
|
||||||
|
|
||||||
fun LanguageVersionSettings.coroutinesJvmInternalPackageFqName() =
|
fun LanguageVersionSettings.coroutinesJvmInternalPackageFqName() =
|
||||||
coroutinesPackageFqName().child(Name.identifier("jvm")).child(Name.identifier("internal"))
|
coroutinesPackageFqName().child(Name.identifier("jvm")).child(Name.identifier("internal"))
|
||||||
|
|
||||||
|
val DEBUG_METADATA_ANNOTATION_ASM_TYPE = RELEASE_COROUTINES_VERSION_SETTINGS.coroutinesJvmInternalPackageFqName()
|
||||||
|
.child(Name.identifier("DebugMetadata")).topLevelClassAsmType()
|
||||||
|
|
||||||
fun LanguageVersionSettings.continuationAsmType() =
|
fun LanguageVersionSettings.continuationAsmType() =
|
||||||
continuationInterfaceFqName().topLevelClassAsmType()
|
continuationInterfaceFqName().topLevelClassAsmType()
|
||||||
|
|
||||||
|
|||||||
+5
-2
@@ -452,7 +452,9 @@ class AnonymousObjectTransformer(
|
|||||||
languageVersionSettings = languageVersionSettings,
|
languageVersionSettings = languageVersionSettings,
|
||||||
shouldPreserveClassInitialization = state.constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
shouldPreserveClassInitialization = state.constructorCallNormalizationMode.shouldPreserveClassInitialization,
|
||||||
containingClassInternalName = builder.thisName,
|
containingClassInternalName = builder.thisName,
|
||||||
isForNamedFunction = false
|
isForNamedFunction = false,
|
||||||
|
sourceFile = sourceInfo ?: "",
|
||||||
|
isCrossinlineLambda = inliningContext.isContinuation
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -481,7 +483,8 @@ class AnonymousObjectTransformer(
|
|||||||
containingClassInternalName = builder.thisName,
|
containingClassInternalName = builder.thisName,
|
||||||
isForNamedFunction = true,
|
isForNamedFunction = true,
|
||||||
needDispatchReceiver = true,
|
needDispatchReceiver = true,
|
||||||
internalNameForDispatchReceiver = builder.thisName
|
internalNameForDispatchReceiver = builder.thisName,
|
||||||
|
sourceFile = sourceInfo ?: ""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
// !LANGUAGE: +ReleaseCoroutines
|
||||||
|
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// WITH_COROUTINES
|
||||||
|
|
||||||
|
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER", "CANNOT_OVERRIDE_INVISIBLE_MEMBER")
|
||||||
|
|
||||||
|
import helpers.*
|
||||||
|
import kotlin.coroutines.*
|
||||||
|
import kotlin.coroutines.intrinsics.*
|
||||||
|
import kotlin.coroutines.jvm.internal.*
|
||||||
|
|
||||||
|
suspend fun getSpilledToVariable() = suspendCoroutineUninterceptedOrReturn<Array<String>> {
|
||||||
|
(it as BaseContinuationImpl).getSpilledVariableFieldMapping()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Array<String>.toMap(): Map<String, String> {
|
||||||
|
val res = hashMapOf<String, String>()
|
||||||
|
for (i in 0..(size - 1) step 2) {
|
||||||
|
res[get(i)] = get(i + 1)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
var continuation: Continuation<Unit>? = null
|
||||||
|
|
||||||
|
suspend fun suspendHere() = suspendCoroutineUninterceptedOrReturn<Unit> {
|
||||||
|
continuation = it
|
||||||
|
COROUTINE_SUSPENDED
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun dummy() {}
|
||||||
|
|
||||||
|
suspend fun named(): String {
|
||||||
|
dummy()
|
||||||
|
val s1 = ""
|
||||||
|
val s2 = ""
|
||||||
|
val s3 = ""
|
||||||
|
val s4 = ""
|
||||||
|
val s5 = ""
|
||||||
|
val s6 = ""
|
||||||
|
val s7 = ""
|
||||||
|
val s8 = ""
|
||||||
|
val s9 = ""
|
||||||
|
val map = getSpilledToVariable().toMap()
|
||||||
|
return map["L$0"] + map["L$1"] + map["L$2"] + map["L$3"] + map["L$4"] + map["L$5"] + map["L$6"] + map["L$7"] + map["L$8"]
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun suspended() {
|
||||||
|
dummy()
|
||||||
|
val ss = ""
|
||||||
|
suspendHere()
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun multipleLocalsInOneSlot() {
|
||||||
|
for (first in 0 until 1) {
|
||||||
|
suspendHere()
|
||||||
|
}
|
||||||
|
for (second in 0 until 1) {
|
||||||
|
suspendHere()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun builder(c: suspend () -> Unit) {
|
||||||
|
c.startCoroutine(EmptyContinuation)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var res: String = ""
|
||||||
|
builder {
|
||||||
|
res = named()
|
||||||
|
}
|
||||||
|
if (res != "s1s2s3s4s5s6s7s8s9") {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
builder {
|
||||||
|
dummy()
|
||||||
|
val a = ""
|
||||||
|
res = getSpilledToVariable().toMap()["L$0"] ?: "lambda fail"
|
||||||
|
}
|
||||||
|
if (res != "a") {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
|
||||||
|
builder {
|
||||||
|
suspended()
|
||||||
|
}
|
||||||
|
res = (continuation!! as BaseContinuationImpl).getSpilledVariableFieldMapping().toMap()["L$0"] ?: "suspended fail"
|
||||||
|
if (res != "ss") {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
|
||||||
|
builder {
|
||||||
|
multipleLocalsInOneSlot()
|
||||||
|
}
|
||||||
|
res = (continuation!! as BaseContinuationImpl).getSpilledVariableFieldMapping().toMap()["I$0"] ?: "multipleLocalsInOneSlot fail 1"
|
||||||
|
if (res != "first") {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
continuation!!.resumeWith(SuccessOrFailure.success(Unit))
|
||||||
|
res = (continuation!! as BaseContinuationImpl).getSpilledVariableFieldMapping().toMap()["I$0"] ?: "multipleLocalsInOneSlot fail 2"
|
||||||
|
if (res != "second") {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
// !LANGUAGE: +ReleaseCoroutines
|
||||||
|
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// FULL_JDK
|
||||||
|
// WITH_COROUTINES
|
||||||
|
|
||||||
|
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER", "CANNOT_OVERRIDE_INVISIBLE_MEMBER")
|
||||||
|
|
||||||
|
import helpers.*
|
||||||
|
import kotlin.coroutines.*
|
||||||
|
import kotlin.coroutines.intrinsics.*
|
||||||
|
import kotlin.coroutines.jvm.internal.*
|
||||||
|
|
||||||
|
private fun BaseContinuationImpl.getSourceFileAndLineNumber(): Pair<String, Int> {
|
||||||
|
return (getStackTraceElement()?.fileName ?: "") to (getStackTraceElement()?.lineNumber ?: -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun getSourceFileAndLineNumberFromContinuation() = suspendCoroutineUninterceptedOrReturn<Pair<String, Int>> {
|
||||||
|
(it as BaseContinuationImpl).getSourceFileAndLineNumber()
|
||||||
|
}
|
||||||
|
|
||||||
|
var continuation: Continuation<*>? = null
|
||||||
|
|
||||||
|
suspend fun suspendHere() = suspendCoroutineUninterceptedOrReturn<Unit> {
|
||||||
|
continuation = it
|
||||||
|
COROUTINE_SUSPENDED
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun dummy() {}
|
||||||
|
|
||||||
|
suspend fun named(): Pair<String, Int> {
|
||||||
|
dummy()
|
||||||
|
return getSourceFileAndLineNumberFromContinuation()
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun suspended() {
|
||||||
|
dummy()
|
||||||
|
suspendHere()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun builder(c: suspend () -> Unit) {
|
||||||
|
c.startCoroutine(EmptyContinuation)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var res: Any? = null
|
||||||
|
builder {
|
||||||
|
res = named()
|
||||||
|
}
|
||||||
|
if (res != Pair("runtimeDebugMetadata.kt", 35)) {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
builder {
|
||||||
|
dummy()
|
||||||
|
res = getSourceFileAndLineNumberFromContinuation()
|
||||||
|
}
|
||||||
|
if (res != Pair("runtimeDebugMetadata.kt", 57)) {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
|
||||||
|
builder {
|
||||||
|
suspended()
|
||||||
|
}
|
||||||
|
res = (continuation!! as BaseContinuationImpl).getSourceFileAndLineNumber()
|
||||||
|
if (res != Pair("runtimeDebugMetadata.kt", 40)) {
|
||||||
|
return "" + res
|
||||||
|
}
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
@@ -6,8 +7,8 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$1
|
||||||
@@ -15,14 +16,15 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1 {
|
public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1
|
||||||
@@ -53,8 +55,8 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1 {
|
public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
synthetic final field this$0: CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1
|
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1
|
||||||
@@ -73,6 +75,7 @@ public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1 {
|
|||||||
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
@@ -81,8 +84,8 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1
|
||||||
@@ -90,14 +93,15 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 {
|
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1
|
||||||
@@ -135,6 +139,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$fold$1 {
|
|||||||
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class CrossinlineKt$box$1 {
|
final class CrossinlineKt$box$1 {
|
||||||
synthetic final field $res: kotlin.jvm.internal.Ref$IntRef
|
synthetic final field $res: kotlin.jvm.internal.Ref$IntRef
|
||||||
@@ -153,8 +158,8 @@ final class CrossinlineKt$box$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$consumeEach$2$send$1 {
|
public final class CrossinlineKt$consumeEach$2$send$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$consumeEach$2
|
synthetic final field this$0: CrossinlineKt$consumeEach$2
|
||||||
inner class CrossinlineKt$consumeEach$2
|
inner class CrossinlineKt$consumeEach$2
|
||||||
inner class CrossinlineKt$consumeEach$2$send$1
|
inner class CrossinlineKt$consumeEach$2$send$1
|
||||||
@@ -173,6 +178,7 @@ public final class CrossinlineKt$consumeEach$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
@@ -180,8 +186,8 @@ public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1
|
inner class CrossinlineKt$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$1
|
inner class CrossinlineKt$filter$$inlined$source$1$1
|
||||||
@@ -189,14 +195,15 @@ public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$filter$$inlined$source$1$lambda$1$1 {
|
public final class CrossinlineKt$filter$$inlined$source$1$lambda$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1$lambda$1
|
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1
|
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1$1
|
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1$1
|
||||||
@@ -227,8 +234,8 @@ public final class CrossinlineKt$filter$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$fold$$inlined$consumeEach$1$1 {
|
public final class CrossinlineKt$fold$$inlined$consumeEach$1$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1
|
synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$fold$$inlined$consumeEach$1
|
inner class CrossinlineKt$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$fold$$inlined$consumeEach$1$1
|
inner class CrossinlineKt$fold$$inlined$consumeEach$1$1
|
||||||
@@ -248,6 +255,7 @@ public final class CrossinlineKt$fold$$inlined$consumeEach$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$range$$inlined$source$1$1 {
|
public final class CrossinlineKt$range$$inlined$source$1$1 {
|
||||||
field I$0: int
|
field I$0: int
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
@@ -255,8 +263,8 @@ public final class CrossinlineKt$range$$inlined$source$1$1 {
|
|||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$range$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$range$$inlined$source$1
|
||||||
inner class CrossinlineKt$range$$inlined$source$1
|
inner class CrossinlineKt$range$$inlined$source$1
|
||||||
inner class CrossinlineKt$range$$inlined$source$1$1
|
inner class CrossinlineKt$range$$inlined$source$1$1
|
||||||
@@ -276,8 +284,8 @@ public final class CrossinlineKt$range$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$source$1$consume$1 {
|
public final class CrossinlineKt$source$1$consume$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$source$1
|
synthetic final field this$0: CrossinlineKt$source$1
|
||||||
inner class CrossinlineKt$source$1
|
inner class CrossinlineKt$source$1
|
||||||
inner class CrossinlineKt$source$1$consume$1
|
inner class CrossinlineKt$source$1$consume$1
|
||||||
|
|||||||
+19
-11
@@ -1,4 +1,5 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
@@ -6,8 +7,8 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$1
|
||||||
@@ -15,14 +16,15 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1 {
|
public final class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
synthetic final field this$0: CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1
|
inner class CrossinlineKt$box$1$filter$$inlined$source$1$lambda$1$1
|
||||||
@@ -53,8 +55,8 @@ public final class CrossinlineKt$box$1$filter$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1 {
|
public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
synthetic final field this$0: CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1
|
inner class CrossinlineKt$box$1$fold$$inlined$consumeEach$1$1
|
||||||
@@ -73,6 +75,7 @@ public final class CrossinlineKt$box$1$fold$$inlined$consumeEach$1 {
|
|||||||
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
@@ -81,8 +84,8 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1
|
||||||
@@ -90,14 +93,15 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 {
|
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
|
||||||
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1
|
inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1
|
||||||
@@ -135,6 +139,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$fold$1 {
|
|||||||
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class CrossinlineKt$box$1 {
|
final class CrossinlineKt$box$1 {
|
||||||
synthetic final field $res: kotlin.jvm.internal.Ref$IntRef
|
synthetic final field $res: kotlin.jvm.internal.Ref$IntRef
|
||||||
@@ -153,8 +158,8 @@ final class CrossinlineKt$box$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$consumeEach$2$send$1 {
|
public final class CrossinlineKt$consumeEach$2$send$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$consumeEach$2
|
synthetic final field this$0: CrossinlineKt$consumeEach$2
|
||||||
inner class CrossinlineKt$consumeEach$2
|
inner class CrossinlineKt$consumeEach$2
|
||||||
inner class CrossinlineKt$consumeEach$2$send$1
|
inner class CrossinlineKt$consumeEach$2$send$1
|
||||||
@@ -173,6 +178,7 @@ public final class CrossinlineKt$consumeEach$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
@@ -180,8 +186,8 @@ public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
|||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
field L$5: java.lang.Object
|
field L$5: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1
|
inner class CrossinlineKt$filter$$inlined$source$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$1
|
inner class CrossinlineKt$filter$$inlined$source$1$1
|
||||||
@@ -189,14 +195,15 @@ public final class CrossinlineKt$filter$$inlined$source$1$1 {
|
|||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$filter$$inlined$source$1$lambda$1$1 {
|
public final class CrossinlineKt$filter$$inlined$source$1$lambda$1$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1$lambda$1
|
synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1
|
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1
|
||||||
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1$1
|
inner class CrossinlineKt$filter$$inlined$source$1$lambda$1$1
|
||||||
@@ -227,8 +234,8 @@ public final class CrossinlineKt$filter$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$fold$$inlined$consumeEach$1$1 {
|
public final class CrossinlineKt$fold$$inlined$consumeEach$1$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1
|
synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$fold$$inlined$consumeEach$1
|
inner class CrossinlineKt$fold$$inlined$consumeEach$1
|
||||||
inner class CrossinlineKt$fold$$inlined$consumeEach$1$1
|
inner class CrossinlineKt$fold$$inlined$consumeEach$1$1
|
||||||
@@ -248,6 +255,7 @@ public final class CrossinlineKt$fold$$inlined$consumeEach$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class CrossinlineKt$range$$inlined$source$1$1 {
|
public final class CrossinlineKt$range$$inlined$source$1$1 {
|
||||||
field I$0: int
|
field I$0: int
|
||||||
field I$1: int
|
field I$1: int
|
||||||
@@ -256,8 +264,8 @@ public final class CrossinlineKt$range$$inlined$source$1$1 {
|
|||||||
field L$2: java.lang.Object
|
field L$2: java.lang.Object
|
||||||
field L$3: java.lang.Object
|
field L$3: java.lang.Object
|
||||||
field L$4: java.lang.Object
|
field L$4: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$range$$inlined$source$1
|
synthetic final field this$0: CrossinlineKt$range$$inlined$source$1
|
||||||
inner class CrossinlineKt$range$$inlined$source$1
|
inner class CrossinlineKt$range$$inlined$source$1
|
||||||
inner class CrossinlineKt$range$$inlined$source$1$1
|
inner class CrossinlineKt$range$$inlined$source$1$1
|
||||||
@@ -277,8 +285,8 @@ public final class CrossinlineKt$range$$inlined$source$1 {
|
|||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class CrossinlineKt$source$1$consume$1 {
|
public final class CrossinlineKt$source$1$consume$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: CrossinlineKt$source$1
|
synthetic final field this$0: CrossinlineKt$source$1
|
||||||
inner class CrossinlineKt$source$1
|
inner class CrossinlineKt$source$1
|
||||||
inner class CrossinlineKt$source$1$consume$1
|
inner class CrossinlineKt$source$1$consume$1
|
||||||
|
|||||||
+5
-2
@@ -1,3 +1,4 @@
|
|||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class InlineWithStateMachineKt$box$1 {
|
final class InlineWithStateMachineKt$box$1 {
|
||||||
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||||
@@ -11,22 +12,24 @@ final class InlineWithStateMachineKt$box$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class InlineWithStateMachineKt$mainSuspend$1 {
|
final class InlineWithStateMachineKt$mainSuspend$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class InlineWithStateMachineKt$mainSuspend$1
|
inner class InlineWithStateMachineKt$mainSuspend$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
public final class InlineWithStateMachineKt$suspendHere$1 {
|
public final class InlineWithStateMachineKt$suspendHere$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class InlineWithStateMachineKt$suspendHere$1
|
inner class InlineWithStateMachineKt$suspendHere$1
|
||||||
public method <init>(p0: kotlin.coroutines.Continuation): void
|
public method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
Vendored
+3
-1
@@ -1,3 +1,4 @@
|
|||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class InlineWithoutStateMachineKt$box$1 {
|
final class InlineWithoutStateMachineKt$box$1 {
|
||||||
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||||
@@ -12,11 +13,12 @@ final class InlineWithoutStateMachineKt$box$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class InlineWithoutStateMachineKt$complexSuspend$1 {
|
final class InlineWithoutStateMachineKt$complexSuspend$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
field L$1: java.lang.Object
|
field L$1: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class InlineWithoutStateMachineKt$complexSuspend$1
|
inner class InlineWithoutStateMachineKt$complexSuspend$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class SimpleKt$box$1 {
|
final class SimpleKt$box$1 {
|
||||||
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class WhenUnitKt$box$1 {
|
final class WhenUnitKt$box$1 {
|
||||||
field label: int
|
field label: int
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class CoroutineContextIntrinsicKt$notTailCall$1 {
|
final class CoroutineContextIntrinsicKt$notTailCall$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class CoroutineContextIntrinsicKt$notTailCall$1
|
inner class CoroutineContextIntrinsicKt$notTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class Controller$multipleSuspensions$1 {
|
final class Controller$multipleSuspensions$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: Controller
|
synthetic final field this$0: Controller
|
||||||
inner class Controller$multipleSuspensions$1
|
inner class Controller$multipleSuspensions$1
|
||||||
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
|
||||||
@@ -10,10 +11,11 @@ final class Controller$multipleSuspensions$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class Controller$nonTailCall$1 {
|
final class Controller$nonTailCall$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
synthetic final field this$0: Controller
|
synthetic final field this$0: Controller
|
||||||
inner class Controller$nonTailCall$1
|
inner class Controller$nonTailCall$1
|
||||||
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
|
||||||
@@ -31,6 +33,7 @@ public final class Controller {
|
|||||||
public final @org.jetbrains.annotations.Nullable method tailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method tailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class CoroutineFieldsKt$box$1 {
|
final class CoroutineFieldsKt$box$1 {
|
||||||
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class OomInReturnUnitKt$test$1 {
|
final class OomInReturnUnitKt$test$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class OomInReturnUnitKt$test$1
|
inner class OomInReturnUnitKt$test$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
+11
-5
@@ -5,34 +5,38 @@ public final class Generic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TailSuspendUnitFunKt$callsIntNotTailCall$1 {
|
final class TailSuspendUnitFunKt$callsIntNotTailCall$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TailSuspendUnitFunKt$callsIntNotTailCall$1
|
inner class TailSuspendUnitFunKt$callsIntNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TailSuspendUnitFunKt$lambdaAsParameterNotTailCall$1 {
|
final class TailSuspendUnitFunKt$lambdaAsParameterNotTailCall$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TailSuspendUnitFunKt$lambdaAsParameterNotTailCall$1
|
inner class TailSuspendUnitFunKt$lambdaAsParameterNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TailSuspendUnitFunKt$multipleExitPointsNotTailCall$1 {
|
final class TailSuspendUnitFunKt$multipleExitPointsNotTailCall$1 {
|
||||||
field Z$0: boolean
|
field Z$0: boolean
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TailSuspendUnitFunKt$multipleExitPointsNotTailCall$1
|
inner class TailSuspendUnitFunKt$multipleExitPointsNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class TailSuspendUnitFunKt$multipleExitPointsWhen$2 {
|
final class TailSuspendUnitFunKt$multipleExitPointsWhen$2 {
|
||||||
field label: int
|
field label: int
|
||||||
@@ -44,9 +48,10 @@ final class TailSuspendUnitFunKt$multipleExitPointsWhen$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TailSuspendUnitFunKt$notTailCall$1 {
|
final class TailSuspendUnitFunKt$notTailCall$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TailSuspendUnitFunKt$notTailCall$1
|
inner class TailSuspendUnitFunKt$notTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
@@ -63,9 +68,10 @@ final class TailSuspendUnitFunKt$useGenericIngerType$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TailSuspendUnitFunKt$useNullableUnit$1 {
|
final class TailSuspendUnitFunKt$useNullableUnit$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TailSuspendUnitFunKt$useNullableUnit$1
|
inner class TailSuspendUnitFunKt$useNullableUnit$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class TryCatchTailCallKt$catchException$1 {
|
final class TryCatchTailCallKt$catchException$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class TryCatchTailCallKt$catchException$1
|
inner class TryCatchTailCallKt$catchException$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
@@ -5,34 +5,38 @@ public final class Generic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class UnreachableKt$callsIntNotTailCall$1 {
|
final class UnreachableKt$callsIntNotTailCall$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class UnreachableKt$callsIntNotTailCall$1
|
inner class UnreachableKt$callsIntNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class UnreachableKt$lambdaAsParameterNotTailCall$1 {
|
final class UnreachableKt$lambdaAsParameterNotTailCall$1 {
|
||||||
field L$0: java.lang.Object
|
field L$0: java.lang.Object
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class UnreachableKt$lambdaAsParameterNotTailCall$1
|
inner class UnreachableKt$lambdaAsParameterNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class UnreachableKt$multipleExitPointsNotTailCall$1 {
|
final class UnreachableKt$multipleExitPointsNotTailCall$1 {
|
||||||
field Z$0: boolean
|
field Z$0: boolean
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class UnreachableKt$multipleExitPointsNotTailCall$1
|
inner class UnreachableKt$multipleExitPointsNotTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
final class UnreachableKt$multipleExitPointsWhen$2 {
|
final class UnreachableKt$multipleExitPointsWhen$2 {
|
||||||
field label: int
|
field label: int
|
||||||
@@ -44,9 +48,10 @@ final class UnreachableKt$multipleExitPointsWhen$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class UnreachableKt$notTailCall$1 {
|
final class UnreachableKt$notTailCall$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class UnreachableKt$notTailCall$1
|
inner class UnreachableKt$notTailCall$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
@@ -63,9 +68,10 @@ final class UnreachableKt$useGenericInferType$2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
|
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||||
final class UnreachableKt$useNullableUnit$1 {
|
final class UnreachableKt$useNullableUnit$1 {
|
||||||
synthetic field data: java.lang.Object
|
|
||||||
field label: int
|
field label: int
|
||||||
|
synthetic field result: java.lang.Object
|
||||||
inner class UnreachableKt$useNullableUnit$1
|
inner class UnreachableKt$useNullableUnit$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
|
|||||||
+23
@@ -6434,6 +6434,29 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/coroutines/debug")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Debug extends AbstractBlackBoxCodegenTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInDebug() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/coroutines/debug"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("debuggerMetadata.kt")
|
||||||
|
public void testDebuggerMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/debuggerMetadata.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("runtimeDebugMetadata.kt")
|
||||||
|
public void testRuntimeDebugMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/runtimeDebugMetadata.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+23
@@ -6434,6 +6434,29 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/coroutines/debug")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Debug extends AbstractLightAnalysisModeTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInDebug() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/coroutines/debug"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("debuggerMetadata.kt")
|
||||||
|
public void testDebuggerMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/debuggerMetadata.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("runtimeDebugMetadata.kt")
|
||||||
|
public void testRuntimeDebugMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/runtimeDebugMetadata.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+23
@@ -6434,6 +6434,29 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/coroutines/debug")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Debug extends AbstractIrBlackBoxCodegenTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInDebug() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/coroutines/debug"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("debuggerMetadata.kt")
|
||||||
|
public void testDebuggerMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/debuggerMetadata.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("runtimeDebugMetadata.kt")
|
||||||
|
public void testRuntimeDebugMetadata() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/debug/runtimeDebugMetadata.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+13
@@ -5619,6 +5619,19 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/coroutines/debug")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Debug extends AbstractIrJsCodegenBoxTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS_IR, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInDebug() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/coroutines/debug"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS_IR, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+13
@@ -6144,6 +6144,19 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/coroutines/debug")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class Debug extends AbstractJsCodegenBoxTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInDebug() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/coroutines/debug"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
@TestMetadata("compiler/testData/codegen/box/coroutines/featureIntersection")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user