Support main entry-point without arguments in JVM

#KT-26574 In Progress
This commit is contained in:
Denis Zharkov
2018-09-06 18:24:35 +03:00
parent 2c920b732c
commit bc722f9c5f
11 changed files with 148 additions and 35 deletions
@@ -0,0 +1 @@
Return code: 0
@@ -0,0 +1,9 @@
package Hello
fun main(args: Array<String>) {
System.out.println("Hello!")
}
fun main() {
System.out.println("Fail")
}
@@ -0,0 +1,4 @@
OUT:
Hello!
Return code: 0
@@ -0,0 +1 @@
Return code: 0
@@ -0,0 +1,5 @@
package Hello
fun main() {
System.out.println("Hello!")
}
@@ -0,0 +1,4 @@
OUT:
Hello!
Return code: 0
@@ -0,0 +1 @@
Return code: 0
@@ -0,0 +1,36 @@
package Hello
import kotlin.concurrent.thread
import kotlin.coroutines.suspendCoroutine
import kotlin.coroutines.resume
import kotlin.reflect.jvm.javaMethod
@kotlin.jvm.Volatile
private var result = ""
@kotlin.jvm.Volatile
private var callback: Function0<Unit>? = null
suspend fun appendAndSuspend(s: String) {
result += s
suspendCoroutine<Unit> { continuation ->
callback = {
continuation.resume(Unit)
}
}
}
suspend fun main() {
thread(isDaemon = true) {
while (true) {
val c = callback
c?.invoke()
Thread.sleep(500)
}
}
appendAndSuspend("O")
appendAndSuspend("K")
println(result)
callback = null
}
@@ -0,0 +1,4 @@
OUT:
OK
Return code: 0