[K/JS] Rework main function call to support it in per-file

This commit is contained in:
Artem Kobzar
2023-10-04 12:13:20 +00:00
committed by Space Team
parent faae5f9b38
commit eef57f216c
57 changed files with 1091 additions and 172 deletions
@@ -0,0 +1,24 @@
// EXPECTED_REACHABLE_NODES: 1281
// ES_MODULES
// CALL_MAIN
var ok: String = "OK"
fun main(args: Array<Int>) {
ok += "Fail Int"
}
fun main(args: Array<in String>) {
ok += "Fail IN"
}
fun main(args: Array<String>): Unit? {
ok += "Fail return Unit?"
return Unit
}
fun Any.main(args: Array<String>) {
ok += "Fail Any.main(...)"
}
fun box() = ok
@@ -0,0 +1,56 @@
// EXPECTED_REACHABLE_NODES: 1281
// ES_MODULES
// CALL_MAIN
// FILE: ok.kt
package ok
var ok: String = "fail"
// FILE: 1.kt
// RECOMPILE
package a.a
import ok.*
fun main(args: Array<String>) {
ok = "fail: b.b"
}
// FILE: 0.kt
package b
import ok.*
fun main(args: Array<String>) {
ok = "fail: b"
}
// FILE: 2.kt
package a
import ok.*
fun main(args: Array<String>) {
ok = "OK"
}
// FILE: 3.kt
package a.b
import ok.*
fun main(args: Array<String>) {
ok = "fail: a.b"
}
// FILE: main.kt
import ok.*
fun box() = ok
+11
View File
@@ -0,0 +1,11 @@
// EXPECTED_REACHABLE_NODES: 1281
// ES_MODULES
// CALL_MAIN
var ok: String = "fail"
fun main() {
ok = "OK"
}
fun box() = ok
+13
View File
@@ -0,0 +1,13 @@
// EXPECTED_REACHABLE_NODES: 1281
// ES_MODULES
// CALL_MAIN
var ok: String = "fail"
fun main(args: Array<String>) {
if (0 != args.size) error("fail")
ok = "OK"
}
fun box() = ok
@@ -0,0 +1,27 @@
// EXPECTED_REACHABLE_NODES: 1296
// ES_MODULES
// CALL_MAIN
import kotlin.coroutines.*
var ok: String = "fail"
var callback: () -> Unit = {}
suspend fun main(args: Array<String>) {
if (0 != args.size) error("Fail")
suspendCoroutine<Unit> { cont ->
callback = {
cont.resume(Unit)
}
}
ok = "OK"
}
fun box(): String {
if ("fail" != ok) return "Fail"
callback()
return ok
}
@@ -0,0 +1,25 @@
// EXPECTED_REACHABLE_NODES: 1296
// ES_MODULES
// CALL_MAIN
import kotlin.coroutines.*
var ok: String = "fail"
var callback: () -> Unit = {}
suspend fun main() {
suspendCoroutine<Unit> { cont ->
callback = {
cont.resume(Unit)
}
}
ok = "OK"
}
fun box(): String {
if ("fail" != ok) error("Fail")
callback()
return ok
}
@@ -0,0 +1,30 @@
// EXPECTED_REACHABLE_NODES: 1299
// ES_MODULES
// CALL_MAIN
import kotlin.coroutines.*
var callback: () -> Unit = {}
val exception = Exception()
suspend fun main() {
suspendCoroutine<Unit> { cont ->
callback = {
cont.resume(Unit)
}
}
throw exception
}
fun box(): String {
try {
callback()
} catch (e: Exception) {
if (e !== exception) return "Fail"
}
return "OK"
}
@@ -0,0 +1,18 @@
// EXPECTED_REACHABLE_NODES: 1281
// ES_MODULES
// CALL_MAIN
var o: String = "fail O"
var k: String = "K"
fun main() {
k = "fail K"
}
fun main(args: Array<String>) {
if (args.size != 0) error("Fail")
o = "O"
}
fun box() = o + k