From de0e12a1d388aab1e2281d745be4b6edbfda9958 Mon Sep 17 00:00:00 2001 From: Roman <37534597+romanart@users.noreply.github.com> Date: Fri, 17 May 2019 09:03:32 +0300 Subject: [PATCH] Fix coroutine name strategy (#2982) --- .../backend/konan/lower/NativeSuspendFunctionLowering.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/NativeSuspendFunctionLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/NativeSuspendFunctionLowering.kt index e9736b0fa1b..deecde73689 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/NativeSuspendFunctionLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/NativeSuspendFunctionLowering.kt @@ -2,11 +2,11 @@ package org.jetbrains.kotlin.backend.konan.lower import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor import org.jetbrains.kotlin.backend.common.descriptors.WrappedVariableDescriptor +import org.jetbrains.kotlin.backend.common.descriptors.synthesizedName import org.jetbrains.kotlin.backend.common.ir.isSuspend import org.jetbrains.kotlin.backend.common.ir.simpleFunctions import org.jetbrains.kotlin.backend.common.lower.* import org.jetbrains.kotlin.backend.konan.Context -import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.IrElement @@ -44,6 +44,9 @@ internal class NativeSuspendFunctionsLowering(ctx: Context): AbstractSuspendFunc symbols.continuationImpl }) + override fun nameForCoroutineClass(function: IrFunction) = + "${function.name}COROUTINE\$${context.coroutineCount++}".synthesizedName + override fun initializeStateMachine(coroutineConstructors: List, coroutineClassThis: IrValueDeclaration) { for (constructor in coroutineConstructors) { val labelField = constructor.parentAsClass.declarations.single { it is IrField && it.name.asString() == "label" } as IrField