diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt index d243e5a0cd6..2ea608b1525 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt @@ -294,7 +294,7 @@ class CoroutineCodegenForLambda private constructor( functionCodegen.generateMethod(JvmDeclarationOrigin.NO_ORIGIN, funDescriptor, object : FunctionGenerationStrategy.CodegenBased(state) { override fun doGenerateBody(codegen: ExpressionCodegen, signature: JvmMethodSignature) { - codegen.v.generateInvokeMethod(signature) + codegen.v.generateInvokeMethod(signature, funDescriptor) } }) } @@ -316,13 +316,13 @@ class CoroutineCodegenForLambda private constructor( ) mv.visitCode() with(InstructionAdapter(mv)) { - generateInvokeMethod(jvmMethodSignature) + generateInvokeMethod(jvmMethodSignature, untypedDescriptor) } FunctionCodegen.endVisit(mv, "invoke", element) } - private fun InstructionAdapter.generateInvokeMethod(signature: JvmMethodSignature) { + private fun InstructionAdapter.generateInvokeMethod(signature: JvmMethodSignature, descriptor: FunctionDescriptor) { // this load(0, AsmTypes.OBJECT_TYPE) val parameterTypes = signature.valueParameters.map { it.asmType } @@ -348,16 +348,23 @@ class CoroutineCodegenForLambda private constructor( load(arraySlot, AsmTypes.OBJECT_TYPE) } else { var index = 0 + val fromKotlinTypes = + if (!generateErasedCreate && doNotGenerateInvokeBridge) funDescriptor.allValueParameterTypes() + else funDescriptor.allValueParameterTypes().map { funDescriptor.module.builtIns.nullableAnyType } + val toKotlinTypes = + if (!generateErasedCreate && doNotGenerateInvokeBridge) createCoroutineDescriptor.allValueParameterTypes() + else descriptor.allValueParameterTypes() parameterTypes.withVariableIndices().forEach { (varIndex, type) -> load(varIndex + 1, type) - StackValue.coerce(type, createArgumentTypes[index++], this) + StackValue.coerce(type, fromKotlinTypes[index], createArgumentTypes[index], toKotlinTypes[index], this) + index++ } } // this.create(..) invokevirtual( v.thisName, - createCoroutineDescriptor.name.identifier, + typeMapper.mapFunctionName(createCoroutineDescriptor, null), Type.getMethodDescriptor( languageVersionSettings.continuationAsmType(), *createArgumentTypes.toTypedArray() @@ -831,3 +838,6 @@ private object FailingFunctionGenerationStrategy : FunctionGenerationStrategy() fun reportSuspensionPointInsideMonitor(element: KtElement, state: GenerationState, stackTraceElement: String) { state.diagnostics.report(ErrorsJvm.SUSPENSION_POINT_INSIDE_MONITOR.on(element, stackTraceElement)) } + +private fun FunctionDescriptor.allValueParameterTypes(): List = + (listOfNotNull(extensionReceiverParameter?.type)) + valueParameters.map { it.type } \ No newline at end of file diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index 3336d040de2..b0a14b9487b 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -7743,6 +7743,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -7960,6 +7965,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -8172,6 +8182,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt new file mode 100644 index 00000000000..8cea27daae1 --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt @@ -0,0 +1,22 @@ +// WITH_RUNTIME + +import kotlin.coroutines.* + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(Continuation(EmptyCoroutineContext) { + it.getOrThrow() + }) +} + +inline class IC(val s: String) + +fun box(): String { + var res = "FAIL" + val lambda: suspend (IC, IC) -> String = { a, b -> + a.s + b.s + } + builder { + res = lambda(IC("O"), IC("K")) + } + return res +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt new file mode 100644 index 00000000000..6f834f1428d --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt @@ -0,0 +1,29 @@ +// WITH_RUNTIME + +import kotlin.coroutines.* + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(Continuation(EmptyCoroutineContext) { + it.getOrThrow() + }) +} + +inline class IC(val s: String) + +var c: Continuation? = null + +var res = "FAIL" + +fun box(): String { + val lambda: suspend (IC, IC) -> String = { _, _ -> + suspendCoroutine { + @Suppress("UNCHECKED_CAST") + c = it as Continuation + } + } + builder { + res = lambda(IC("_"), IC("_")) + } + c?.resume("OK") + return res +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt new file mode 100644 index 00000000000..c0bffeb261a --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt @@ -0,0 +1,31 @@ +// WITH_RUNTIME +// WITH_COROUTINES + +import kotlin.coroutines.* +import helpers.* + +var result = "FAIL" + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(handleExceptionContinuation { + result = it.message!! + }) +} + +inline class IC(val s: String) + +var c: Continuation? = null + +fun box(): String { + val lambda: suspend (IC, IC) -> String = { _, _ -> + suspendCoroutine { + @Suppress("UNCHECKED_CAST") + c = it as Continuation + } + } + builder { + lambda(IC("O"), IC("K")) + } + c?.resumeWithException(IllegalStateException("OK")) + return result +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 0b527485966..98d23a45728 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -8513,6 +8513,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -8815,6 +8820,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -9112,6 +9122,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index a3e551d817e..6b21bfce8cb 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -8513,6 +8513,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -8815,6 +8820,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -9112,6 +9122,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 01c6f247826..2b6a06cdfb6 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -7743,6 +7743,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -7960,6 +7965,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -8172,6 +8182,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 29c99181d5e..9dffe31c97b 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -6498,6 +6498,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6715,6 +6720,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6927,6 +6937,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 3be1ff3e341..ee289d24964 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -6498,6 +6498,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6715,6 +6720,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6927,6 +6937,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index fef08948512..ca2776cef37 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -6498,6 +6498,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6715,6 +6720,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6927,6 +6937,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/covariantOverrideSuspendFun_Int.kt"); } + @TestMetadata("createMangling.kt") + public void testCreateMangling() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt");