[JVM IR] Fix checkLocalVariablesTableTest/parametersInSuspendLambda

for JVM IR.
This commit is contained in:
Mark Punzalan
2020-01-08 15:31:14 -08:00
committed by Ilmir Usmanov
parent f73891af98
commit e46adbae29
8 changed files with 98 additions and 22 deletions
@@ -8,6 +8,10 @@ package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.backend.common.ir.Symbols
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods
import org.jetbrains.kotlin.codegen.coroutines.INVOKE_SUSPEND_METHOD_NAME
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_CALL_RESULT_NAME
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_CREATE_METHOD_NAME
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
@@ -218,10 +222,10 @@ class JvmSymbols(
val continuationType = continuationClass.typeWith(irBuiltIns.anyNType)
klass.superTypes += continuationType
klass.addConstructor().apply {
addValueParameter("completion", continuationType.makeNullable())
addValueParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationType.makeNullable())
}
klass.addFunction("invokeSuspend", irBuiltIns.anyNType, Modality.ABSTRACT).apply {
addValueParameter("result", resultClassStub.typeWith(irBuiltIns.anyNType))
klass.addFunction(INVOKE_SUSPEND_METHOD_NAME, irBuiltIns.anyNType, Modality.ABSTRACT).apply {
addValueParameter(SUSPEND_CALL_RESULT_NAME, resultClassStub.typeWith(irBuiltIns.anyNType))
}
}
@@ -238,17 +242,17 @@ class JvmSymbols(
klass.superTypes += suspendFunctionInterface.defaultType
klass.addConstructor().apply {
addValueParameter("arity", irBuiltIns.intType)
addValueParameter("completion", continuationClass.typeWith(irBuiltIns.anyNType).makeNullable())
addValueParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationClass.typeWith(irBuiltIns.anyNType).makeNullable())
}
klass.addFunction("invokeSuspend", irBuiltIns.anyNType, Modality.ABSTRACT).apply {
addValueParameter("result", resultClassStub.typeWith(irBuiltIns.anyNType))
klass.addFunction(INVOKE_SUSPEND_METHOD_NAME, irBuiltIns.anyNType, Modality.ABSTRACT).apply {
addValueParameter(SUSPEND_CALL_RESULT_NAME, resultClassStub.typeWith(irBuiltIns.anyNType))
}
klass.addFunction("create", continuationClass.typeWith(irBuiltIns.unitType)).apply {
addValueParameter("completion", continuationClass.typeWith(irBuiltIns.nothingType))
klass.addFunction(SUSPEND_FUNCTION_CREATE_METHOD_NAME, continuationClass.typeWith(irBuiltIns.unitType)).apply {
addValueParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationClass.typeWith(irBuiltIns.nothingType))
}
klass.addFunction("create", continuationClass.typeWith(irBuiltIns.unitType)).apply {
klass.addFunction(SUSPEND_FUNCTION_CREATE_METHOD_NAME, continuationClass.typeWith(irBuiltIns.unitType)).apply {
addValueParameter("value", irBuiltIns.anyNType)
addValueParameter("completion", continuationClass.typeWith(irBuiltIns.nothingType))
addValueParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationClass.typeWith(irBuiltIns.nothingType))
}
}