Skip to content

Commit 36db4d7

Browse files
JSMonkSpace Team
authored andcommitted
[K/JS] Reproduce issue with simple suspend functions that return Unit
^KT-79359
1 parent 4131e80 commit 36db4d7

11 files changed

+128
-0
lines changed

analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// KT-79359
2+
// TARGET_BACKEND: JS_IR
3+
// TARGET_BACKEND: JS_IR_ES6
4+
// IGNORE_BACKEND: JS_IR_ES6
5+
// WITH_STDLIB
6+
// WITH_COROUTINES
7+
8+
import helpers.*
9+
import kotlin.coroutines.*
10+
import kotlin.coroutines.intrinsics.*
11+
12+
var effects = ""
13+
14+
private fun builder(c: suspend () -> Unit) {
15+
c.startCoroutine(EmptyContinuation)
16+
}
17+
18+
suspend fun suspendHere(): Unit = suspendCoroutineUninterceptedOrReturn { x ->
19+
x.resume(Unit)
20+
COROUTINE_SUSPENDED
21+
}
22+
23+
suspend fun simpleReturnsUnit() {
24+
effects += "[simpleReturnsUnit]"
25+
}
26+
27+
suspend fun callTailReturnsUnit() {
28+
effects += "[callTailReturnsUnit]"
29+
suspendHere()
30+
}
31+
32+
suspend fun complexReturnsUnit(shouldSuspend: Boolean) {
33+
if (shouldSuspend) {
34+
suspendHere()
35+
}
36+
37+
effects += "[complexReturnsUnit]"
38+
}
39+
40+
fun box(): String {
41+
var failReason: String? = null
42+
43+
builder {
44+
val simpleUnit = simpleReturnsUnit()
45+
if (simpleUnit.toString() != "kotlin.Unit") {
46+
failReason = "simpleReturnsUnit returns not Unit, but $simpleUnit"
47+
return@builder
48+
}
49+
50+
val tailcallUnit = callTailReturnsUnit()
51+
if (tailcallUnit.toString() != "kotlin.Unit") {
52+
failReason = "callTailReturnsUnit returns not Unit, but $tailcallUnit"
53+
return@builder
54+
}
55+
56+
val complexUnit = complexReturnsUnit(shouldSuspend = true)
57+
if (complexUnit.toString() != "kotlin.Unit") {
58+
failReason = "complexReturnsUnit returns not Unit, but $complexUnit"
59+
return@builder
60+
}
61+
}
62+
63+
return when {
64+
failReason != null -> failReason
65+
effects != "[simpleReturnsUnit][callTailReturnsUnit][complexReturnsUnit]" -> "Fail: effects are $effects"
66+
else -> "OK"
67+
}
68+
}

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)