From eba260f681316a834f51b8c103442dc2ff83e20c Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Wed, 25 Nov 2020 22:26:51 +0100 Subject: [PATCH] IC & Coroutines: Unbox inline classes of suspend lambdas inside 'invoke' if 'create' does not override 'create' from BaseContinuationImpl. In other words, when suspend lambda accepts more than one parameter (including receiver). Do that only if we do not generate bridge 'invoke' method, since inline classes are unboxed in the bridge. Use mangled name for 'create' function in this case inside 'invoke'. #KT-43249 In progress #KT-39847 Fixed #KT-38937 Fixed --- .../codegen/coroutines/CoroutineCodegen.kt | 20 +++++++++--- .../ir/FirBlackBoxCodegenTestGenerated.java | 15 +++++++++ .../inlineClasses/direct/createMangling.kt | 22 +++++++++++++ .../inlineClasses/resume/createMangling.kt | 29 +++++++++++++++++ .../resumeWithException/createMangling.kt | 31 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 15 +++++++++ .../LightAnalysisModeTestGenerated.java | 15 +++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 15 +++++++++ .../IrJsCodegenBoxES6TestGenerated.java | 15 +++++++++ .../IrJsCodegenBoxTestGenerated.java | 15 +++++++++ .../semantics/JsCodegenBoxTestGenerated.java | 15 +++++++++ 11 files changed, 202 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt 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");