[K/JS] Rework main function call to support it in per-file
This commit is contained in:
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1281
|
||||
// ES_MODULES
|
||||
// CALL_MAIN
|
||||
|
||||
var ok: String = "fail"
|
||||
|
||||
fun main() {
|
||||
ok = "OK"
|
||||
}
|
||||
|
||||
fun box() = ok
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
package foo.bar
|
||||
|
||||
var ok = "Fail"
|
||||
|
||||
fun main() {
|
||||
ok = "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package foo.bar
|
||||
|
||||
var ok = "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(...)"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package foo.bar
|
||||
|
||||
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"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package foo.bar
|
||||
|
||||
var ok = "fail"
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
if (args.size != 0) {
|
||||
ok = "Fail with args zie"
|
||||
} else {
|
||||
ok = "OK"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package foo
|
||||
|
||||
import foo.bar.ok
|
||||
|
||||
fun main() {
|
||||
ok = "OK2"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
var ok = "Fail"
|
||||
fun main() {
|
||||
ok = "OK"
|
||||
}
|
||||
fun box(stepId: Int): String {
|
||||
return when (stepId) {
|
||||
0 -> ok
|
||||
else -> "Unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import foo.bar.ok
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
return when (stepId) {
|
||||
0 -> ok
|
||||
1 -> ok
|
||||
2 -> ok
|
||||
3 -> ok
|
||||
4 -> ok
|
||||
5 -> if (ok != "OK2") "Fail" else "OK"
|
||||
else -> "Unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import foo.bar.ok
|
||||
import foo.bar.callback
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
return when (stepId) {
|
||||
0 -> ok
|
||||
1 -> ok
|
||||
2 -> ok
|
||||
3 -> {
|
||||
if (ok != "fail") return "Fail"
|
||||
callback()
|
||||
ok
|
||||
}
|
||||
4 -> ok
|
||||
5 -> if (ok != "OK2") "Fail" else "OK"
|
||||
else -> "Unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import foo.bar.ok
|
||||
|
||||
fun box(stepId: Int): String {
|
||||
return when (stepId) {
|
||||
0 -> ok
|
||||
1 -> ok
|
||||
2 -> ok
|
||||
3 -> ok
|
||||
4 -> ok
|
||||
5 -> if (ok != "OK2") "Fail" else "OK"
|
||||
else -> "Unknown"
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : m.0.kt -> m.kt
|
||||
added file: m.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : m.1.kt -> m.kt
|
||||
U : f.1.kt -> f.kt
|
||||
added file: f.kt
|
||||
modified ir: m.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : f.2.kt -> f.kt
|
||||
modified ir: f.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : f.3.kt -> f.kt
|
||||
U : m.3.kt -> m.kt
|
||||
modified ir: f.kt, m.kt
|
||||
STEP 4:
|
||||
modifications:
|
||||
U : f.4.kt -> f.kt
|
||||
U : m.4.kt -> m.kt
|
||||
modified ir: f.kt, m.kt
|
||||
STEP 5:
|
||||
modifications:
|
||||
U : l.5.kt -> l.kt
|
||||
added file: l.kt
|
||||
updated exports: f.kt
|
||||
@@ -0,0 +1,27 @@
|
||||
MODULES: main
|
||||
CALL_MAIN: true
|
||||
|
||||
STEP 0:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/m, main/m.export, main
|
||||
STEP 1:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/foo/bar/f, main/m, main
|
||||
STEP 2:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/foo/bar/f, main
|
||||
STEP 3:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/foo/bar/f, main/m, main
|
||||
STEP 4:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/foo/bar/f, main/m, main
|
||||
STEP 5:
|
||||
libs: main
|
||||
dirty js modules: main
|
||||
dirty js files: main/foo/l, main/foo/bar/f, main
|
||||
Reference in New Issue
Block a user