[K/JS] Rework main function call to support it in per-file
This commit is contained in:
@@ -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