From 59bd2fbb9158c2afe16a4b1d90ab25ec984b214e Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Wed, 20 Apr 2022 15:49:09 +0000 Subject: [PATCH] test(KT-51066): fixate behavior of value classes in composition with suspend lambdas. --- .../kotlin/js/test/BoxJsTestGenerated.java | 6 ++++ .../js/test/ir/IrBoxJsTestGenerated.java | 6 ++++ .../box/coroutines/lambdaWithValueClass.kt | 31 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java index d48dfe03aec..b62468148d2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/BoxJsTestGenerated.java @@ -790,6 +790,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { runTest("js/js.translator/testData/box/coroutines/debugStatement.kt"); } + @Test + @TestMetadata("lambdaWithValueClass.kt") + public void testLambdaWithValueClass() throws Exception { + runTest("js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt"); + } + @Test @TestMetadata("localVarOptimization.kt") public void testLocalVarOptimization() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index 1cd2eefba9c..6128cf0a3d1 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -790,6 +790,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/coroutines/debugStatement.kt"); } + @Test + @TestMetadata("lambdaWithValueClass.kt") + public void testLambdaWithValueClass() throws Exception { + runTest("js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt"); + } + @Test @TestMetadata("localVarOptimization.kt") public void testLocalVarOptimization() throws Exception { diff --git a/js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt b/js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt new file mode 100644 index 00000000000..93aac2c8b09 --- /dev/null +++ b/js/js.translator/testData/box/coroutines/lambdaWithValueClass.kt @@ -0,0 +1,31 @@ +// EXPECTED_REACHABLE_NODES: 1282 +// WITH_STDLIB +package foo + +import kotlin.coroutines.* +import kotlin.coroutines.intrinsics.* + +value class Res(val value: String) + +suspend fun bar(): Res { + val lambda: suspend () -> Res = { Res("OK") } + return lambda.invoke() +} + +fun builder(c: suspend () -> Unit) { + c.startCoroutine(object : Continuation { + override val context = EmptyCoroutineContext + + override fun resumeWith(result: Result) {} + }) +} + +fun box(): String { + var result = "" + + builder { + result = bar().toString().substring(10, 12) + } + + return result +}