Fix coroutine name strategy (#2982)

This commit is contained in:
Roman
2019-05-17 09:03:32 +03:00
committed by LepilkinaElena
parent 0bdb14e597
commit de0e12a1d3
@@ -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<IrConstructor>, coroutineClassThis: IrValueDeclaration) {
for (constructor in coroutineConstructors) {
val labelField = constructor.parentAsClass.declarations.single { it is IrField && it.name.asString() == "label" } as IrField