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
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(C.Companion companion) {
companion.foo("x");
C.foo("y");
}
}
@@ -0,0 +1,8 @@
package test
class C {
companion object {
@JvmStatic
fun foo(s: String) {}
}
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(C.Companion companion) {
companion.foo("x");
C.Companion.foo("y");
}
}
@@ -0,0 +1,7 @@
package test
class C {
companion object {
fun <caret>foo(s: String) {}
}
}
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(C.Companion companion) {
companion.getFoo();
companion.setFoo(1);
C.getFoo();
C.setFoo(2);
}
}
@@ -0,0 +1,8 @@
package test
class C {
companion object {
@JvmStatic
var foo: Int = 1
}
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(C.Companion companion) {
companion.getFoo();
companion.setFoo(1);
C.Companion.getFoo();
C.Companion.setFoo(2);
}
}
@@ -0,0 +1,7 @@
package test
class C {
companion object {
var <caret>foo: Int = 1
}
}
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(C.O companion) {
companion.foo("x");
C.foo("y");
}
}
@@ -0,0 +1,8 @@
package test
class C {
companion object O {
@JvmStatic
fun foo(s: String) {}
}
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(C.O companion) {
companion.foo("x");
C.O.foo("y");
}
}
@@ -0,0 +1,7 @@
package test
class C {
companion object O {
fun <caret>foo(s: String) {}
}
}
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(C.O companion) {
companion.getFoo();
companion.setFoo(1);
C.getFoo();
C.setFoo(2);
}
}
@@ -0,0 +1,8 @@
package test
class C {
companion object O {
@JvmStatic
var foo: Int = 1
}
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(C.O companion) {
companion.getFoo();
companion.setFoo(1);
C.O.getFoo();
C.O.setFoo(2);
}
}
@@ -0,0 +1,7 @@
package test
class C {
companion object O {
var <caret>foo: Int = 1
}
}
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(O o) {
o.foo("x");
O.foo("y");
}
}
@@ -0,0 +1,6 @@
package test
object O {
@JvmStatic
fun foo(s: String) {}
}
@@ -0,0 +1,8 @@
package test;
class J {
void test(O o) {
o.foo("x");
O.INSTANCE.foo("y");
}
}
@@ -0,0 +1,5 @@
package test
object O {
fun <caret>foo(s: String) {}
}
@@ -0,0 +1,5 @@
{
"mainFile": "test/test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.intentions.AddJvmStaticIntention",
"withRuntime": "true"
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(O o) {
o.getFoo();
o.setFoo(1);
O.getFoo();
O.setFoo(2);
}
}
@@ -0,0 +1,6 @@
package test
object O {
@JvmStatic
var foo: Int = 1
}
@@ -0,0 +1,11 @@
package test;
class J {
void test(O o) {
o.getFoo();
o.setFoo(1);
O.INSTANCE.getFoo();
O.INSTANCE.setFoo(2);
}
}
@@ -0,0 +1,5 @@
package test
object O {
var <caret>foo: Int = 1
}