From 4e334217a8eeaf5215b7f0cc4695895d87aaf71e Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Thu, 26 Nov 2020 03:48:44 +0100 Subject: [PATCH] IC & Coroutines: Unbox inline class parameter of suspend lambda inside 'create' if 'create' overrides 'create' from BaseContinuationImpl. In other words, unbox the parameter if 'create' accepts only one parameter. #KT-43249 Fixed #KT-43533 Fixed --- .../codegen/coroutines/CoroutineCodegen.kt | 25 +++++++++---- .../ir/FirBlackBoxCodegenTestGenerated.java | 15 ++++++++ .../inlineClasses/direct/createOverride.kt | 26 ++++++++++++++ .../inlineClasses/resume/createOverride.kt | 33 +++++++++++++++++ .../resumeWithException/createOverride.kt | 35 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 15 ++++++++ .../LightAnalysisModeTestGenerated.java | 15 ++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 15 ++++++++ .../IrJsCodegenBoxES6TestGenerated.java | 15 ++++++++ .../IrJsCodegenBoxTestGenerated.java | 15 ++++++++ .../semantics/JsCodegenBoxTestGenerated.java | 15 ++++++++ 11 files changed, 218 insertions(+), 6 deletions(-) create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt create mode 100644 compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 2ea608b1525..800d3542bdd 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/coroutines/CoroutineCodegen.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.module +import org.jetbrains.kotlin.resolve.isInlineClassType import org.jetbrains.kotlin.resolve.jvm.AsmTypes import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin @@ -446,12 +447,24 @@ class CoroutineCodegenForLambda private constructor( ) } else { if (generateErasedCreate) { - load(index, AsmTypes.OBJECT_TYPE) - StackValue.coerce( - AsmTypes.OBJECT_TYPE, builtIns.nullableAnyType, - fieldInfoForCoroutineLambdaParameter.fieldType, fieldInfoForCoroutineLambdaParameter.fieldKotlinType, - this - ) + if (parameter.type.isInlineClassType()) { + load(cloneIndex, fieldInfoForCoroutineLambdaParameter.ownerType) + load(index, AsmTypes.OBJECT_TYPE) + StackValue.unboxInlineClass(AsmTypes.OBJECT_TYPE, parameter.type, this) + putfield( + fieldInfoForCoroutineLambdaParameter.ownerInternalName, + fieldInfoForCoroutineLambdaParameter.fieldName, + fieldInfoForCoroutineLambdaParameter.fieldType.descriptor + ) + continue + } else { + load(index, AsmTypes.OBJECT_TYPE) + StackValue.coerce( + AsmTypes.OBJECT_TYPE, builtIns.nullableAnyType, + fieldInfoForCoroutineLambdaParameter.fieldType, fieldInfoForCoroutineLambdaParameter.fieldKotlinType, + this + ) + } } else { load(index, fieldInfoForCoroutineLambdaParameter.fieldType) } 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 b0a14b9487b..377bd3a01ad 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 @@ -7748,6 +7748,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -7970,6 +7975,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -8187,6 +8197,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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/createOverride.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt new file mode 100644 index 00000000000..07a3d26b358 --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt @@ -0,0 +1,26 @@ +// WITH_RUNTIME +// KJS_WITH_FULL_RUNTIME + +import kotlin.coroutines.* + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(Continuation(EmptyCoroutineContext) { + it.getOrThrow() + }) +} + +inline class IC(val s: String) + +suspend fun List.onEach(c: suspend (T) -> Unit) { + for (e in this) { + c(e) + } +} + +fun box(): String { + var res = "" + builder { + listOf(IC("O"), IC("K")).onEach { res += it.s } + } + return res +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt new file mode 100644 index 00000000000..7324325a643 --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt @@ -0,0 +1,33 @@ +// WITH_RUNTIME +// KJS_WITH_FULL_RUNTIME + +import kotlin.coroutines.* + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(Continuation(EmptyCoroutineContext) { + it.getOrThrow() + }) +} + +inline class IC(val s: String) + +suspend fun List.onEach(c: suspend (T) -> Unit) { + for (e in this) { + c(e) + } +} + +var c: Continuation? = null + +fun box(): String { + var res = "" + builder { + listOf(IC("O"), IC("K")).onEach { res += suspendCoroutine { cont -> + @Suppress("UNCHECKED_CAST") + c = cont as Continuation + }} + } + c?.resume("O") + c?.resume("K") + return res +} \ No newline at end of file diff --git a/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.kt b/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.kt new file mode 100644 index 00000000000..268f26ea710 --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.kt @@ -0,0 +1,35 @@ +// WITH_RUNTIME +// WITH_COROUTINES +// KJS_WITH_FULL_RUNTIME + +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) + +suspend fun List.onEach(c: suspend (T) -> Unit) { + for (e in this) { + c(e) + } +} + +var c: Continuation? = null + +fun box(): String { + builder { + listOf(IC("O"), IC("K")).onEach { suspendCoroutine { cont -> + @Suppress("UNCHECKED_CAST") + c = cont as Continuation + }} + } + 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 98d23a45728..e2a78f11cdd 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -8518,6 +8518,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -8825,6 +8830,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -9127,6 +9137,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 6b21bfce8cb..ac3160b8849 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -8518,6 +8518,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -8825,6 +8830,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -9127,6 +9137,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 2b6a06cdfb6..ac46df24efa 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -7748,6 +7748,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -7970,6 +7975,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -8187,6 +8197,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 9dffe31c97b..23e823f35f0 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 @@ -6503,6 +6503,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6725,6 +6730,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6942,6 +6952,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 ee289d24964..9b5a4e5cfd8 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 @@ -6503,6 +6503,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6725,6 +6730,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6942,6 +6952,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.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 ca2776cef37..05d23e91356 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 @@ -6503,6 +6503,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/direct/genericOverrideSuspendFun.kt"); @@ -6725,6 +6730,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resume/genericOverrideSuspendFun.kt"); @@ -6942,6 +6952,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createMangling.kt"); } + @TestMetadata("createOverride.kt") + public void testCreateOverride() throws Exception { + runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/createOverride.kt"); + } + @TestMetadata("genericOverrideSuspendFun.kt") public void testGenericOverrideSuspendFun() throws Exception { runTest("compiler/testData/codegen/box/coroutines/inlineClasses/resumeWithException/genericOverrideSuspendFun.kt");