JVM IR: Support parameterless main methods

This commit:

- introduces tests explicating what is and isn't considered a
  proper main method on the JVM backends.
- implements support for parameterless main methods on the JVM IR
  backend
- See KT-34338 for more tests.
This commit is contained in:
Kristoffer Andersen
2019-10-14 11:58:02 +02:00
committed by Alexander Udalov
parent 4b77db8979
commit 28b6913a25
18 changed files with 346 additions and 5 deletions
@@ -0,0 +1,11 @@
fun main() {
}
fun main(args: Array<in String>) {
}
// method: ArrayWithContravariantStringIsNotMainMethodKt::main
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null
@@ -0,0 +1,24 @@
fun main() {
}
fun main(args: Array<Int>) {
}
fun main(args: Array<in String>) {
}
fun main(args: Array<String>): Unit? {
return Unit
}
fun Any.main(args: Array<String>) {
}
// method: ImpostorMainsKt::main
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null
@@ -0,0 +1,7 @@
fun main(args: Array<String>) {
}
// method: MainKt::main
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null
@@ -0,0 +1,21 @@
// WITH_RUNTIME
fun main() {
}
@JvmName("notMain")
fun main(args: Array<String>) {
}
// method: NotJvmMainNameKt::main
// jvm signature: ()V
// generic signature: null
// method: NotJvmMainNameKt::main
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null
// method: NotJvmMainNameKt::notMain
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null
@@ -0,0 +1,11 @@
fun main() {
}
// method: SimpleKt::main
// jvm signature: ()V
// generic signature: null
// method: SimpleKt::main
// jvm signature: ([Ljava/lang/String;)V
// generic signature: null