Add @JvmStatic Intention: Support functions/properties in objects

Also eliminate unnecessary object instance references on Java call sites

 #KT-20095 Fixed
This commit is contained in:
Alexey Sedunov
2017-11-03 15:39:16 +03:00
parent cfad305826
commit ba0b21d1a3
55 changed files with 446 additions and 109 deletions
+7
View File
@@ -0,0 +1,7 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
// ERROR: Abstract property 'foo' in non-abstract class 'Test'
object Test {
abstract val <caret>foo: Int
}
+6
View File
@@ -0,0 +1,6 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
object Test {
const val <caret>foo = 1
}
@@ -1,8 +0,0 @@
// WITH_RUNTIME
class Test {
companion object {
fun <caret>main(args: Array<String>) {
}
}
}
@@ -1,9 +0,0 @@
// WITH_RUNTIME
class Test {
companion object {
@JvmStatic
fun main(args: Array<String>) {
}
}
}
-6
View File
@@ -1,6 +0,0 @@
// WITH_RUNTIME
object Test {
fun <caret>main(args: Array<String>) {
}
}
-7
View File
@@ -1,7 +0,0 @@
// WITH_RUNTIME
object Test {
@JvmName("main")
fun <caret>test(args: Array<String>) {
}
}
@@ -1,8 +0,0 @@
// WITH_RUNTIME
object Test {
@JvmStatic
@JvmName("main")
fun <caret>test(args: Array<String>) {
}
}
@@ -1,8 +0,0 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
object Test {
@JvmName("test")
fun <caret>main(args: Array<String>) {
}
}
@@ -1,6 +0,0 @@
// IS_APPLICABLE: false
object Test {
fun <caret>test(args: Array<String>) {
}
}
+6
View File
@@ -0,0 +1,6 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
object Test {
open val <caret>foo = 1
}
+10
View File
@@ -0,0 +1,10 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
interface I {
val foo: Int
}
object Test : I {
override val <caret>foo = 1
}
+3
View File
@@ -0,0 +1,3 @@
// IS_APPLICABLE: false
val <caret>foo = 1
@@ -0,0 +1,5 @@
// IS_APPLICABLE: false
private fun test() = object {
val <caret>foo = 1
}
+5
View File
@@ -0,0 +1,5 @@
// IS_APPLICABLE: false
class Test {
val <caret>foo = 1
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
object Test {
@JvmField
val <caret>foo = 1
}
@@ -1,7 +1,7 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
object Test {
@JvmStatic
fun main(args: Array<String>) {
}
val <caret>foo = 1
}