J2K: get/set-methods converted to properties (but lot of TODOs left)

This commit is contained in:
Valentin Kipyatkov
2015-09-23 00:54:48 +03:00
parent 3f6cadf9b7
commit 320102bbdb
41 changed files with 1266 additions and 298 deletions
+13
View File
@@ -90,4 +90,17 @@ public class MethodReferenceHelperClass {
public void memberFun0(JFunction0 f) {}
public <T> void memberFun1(JFunction1<T> f) {}
public <T, K> void memberFun2(JFunction2<T, K> f) {}
}
public class JavaClassWithProperties {
public int getValue1() { return 1; }
public int getValue2() { return 1; }
public void setValue2(int value) { }
public int getValue3() { return 1; }
public void setValue3(int value) { }
public int getValue4() { return 1; }
public void setValue4(int value) { }
}
+22 -1
View File
@@ -46,4 +46,25 @@ public object KotlinObject {
public var property2: Int
get() = 1
set(value) {}
}
}
public open class KotlinClassWithProperties {
public open var someVar1: String = ""
public open var someVar2: String = ""
public open var someVar3: String = ""
public open var someVar4: String
get() = ""
set(value) {}
public open val someVal: String = ""
public open fun getSomething1() { return 1; }
public open fun getSomething2() { return 1; }
public open fun setSomething2(value: Int) { }
public open fun getSomething3() { return 1; }
public open fun setSomething3(value: Int) { }
public open fun getSomething4() { return 1; }
public open fun setSomething4(value: Int) { }
}
@@ -2,14 +2,15 @@ internal object Library {
fun call() {
}
fun getString(): String {
return ""
}
val string: String
get() {
return ""
}
}
internal class User {
fun main() {
Library.call()
Library.getString().isEmpty()
Library.string.isEmpty()
}
}
@@ -4,18 +4,19 @@ internal class Library {
fun call() {
}
fun getString(): String? {
return ""
}
val string: String?
get() {
return ""
}
}
internal class User {
fun main() {
val lib: Library = Library()
lib.call()
lib.getString()!!.isEmpty()
lib.string!!.isEmpty()
Library().call()
Library().getString()!!.isEmpty()
Library().string!!.isEmpty()
}
}
@@ -2,18 +2,19 @@ internal class Library {
fun call() {
}
fun getString(): String {
return ""
}
val string: String
get() {
return ""
}
}
internal class User {
fun main() {
val lib = Library()
lib.call()
lib.getString().isEmpty()
lib.string.isEmpty()
Library().call()
Library().getString().isEmpty()
Library().string.isEmpty()
}
}
@@ -1,15 +1,5 @@
internal interface I {
fun getX(): Int
fun setX(x: Int)
var x: Int
}
internal class A(private var x: Int) : I {
override fun getX(): Int {
return x
}
override fun setX(x: Int) {
this.x = x
}
}
internal class A(override var x: Int) : I
+3 -5
View File
@@ -1,8 +1,6 @@
class AAA {
var x = 42
private set
fun setX(x: Int) {
this.x += x
}
set(x: Int) {
this.x += x
}
}
@@ -2,7 +2,8 @@
internal class A {
private val s: String? = null
fun getValue(): Any {
return s
}
val value: Any
get() {
return s
}
}
@@ -0,0 +1,14 @@
interface I {
int getSomething1();
int getSomething2();
void setSomething2(int value);
void setSomething3(int value);
int getSomething4();
void setSomething4(String value);
int getSomething5();
int setSomething5(int value);
}
+13
View File
@@ -0,0 +1,13 @@
internal interface I {
val something1: Int
var something2: Int
fun setSomething3(value: Int)
val something4: Int
fun setSomething4(value: String)
val something5: Int
fun setSomething5(value: Int): Int
}
+4 -5
View File
@@ -1,11 +1,10 @@
object AAA {
var x = 42
var y = 0
val z = 0
fun setZ(z: Int) {
Other.z = z
}
var z = 0
set(z: Int) {
Other.z = z
}
}
internal object Other {
+127
View File
@@ -0,0 +1,127 @@
interface I {
int getSomething1();
int getSomething2();
int getSomething3();
void setSomething3(int value);
int getSomething4();
void setSomething4(int value);
int getSomething5();
void setSomething5(int value);
void setSomething6(int value);
}
class B {
public String getFromB1() {
return "";
}
public String getFromB2() {
return "";
}
public void setFromB2(String value) {
}
public String getFromB3() {
return "";
}
public void setFromB3(String value) {
}
public String getFromB4() {
return "";
}
public void setFromB4(String value) {
}
public void setFromB5(String value) {
}
}
abstract class C extends B implements I {
private final int mySomething1;
private int mySomething6;
C(int something1) {
mySomething1 = something1;
}
@Override
public int getSomething1() {
return mySomething1;
}
@Override
public int getSomething2() {
return 0;
}
@Override
public int getSomething3() {
return 0;
}
@Override
public void setSomething3(int value) {
}
@Override
public int getSomething4() {
return 0;
}
@Override
public void setSomething5(int value) {
}
public int getSomething6() {
return mySomething6;
}
@Override
public void setSomething6(int value) {
mySomething6 = value;
}
@Override
public String getFromB1() {
return super.getFromB1();
}
@Override
public String getFromB2() {
return super.getFromB2();
}
@Override
public void setFromB2(String value) {
super.setFromB2(value);
}
@Override
public String getFromB3() {
return super.getFromB3();
}
@Override
public void setFromB4(String value) {
super.setFromB4(value);
}
public String getFromB5() {
return "";
}
@Override
public void setFromB5(String value) {
super.setFromB5(value);
}
}
+114
View File
@@ -0,0 +1,114 @@
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
internal interface I {
val something1: Int
val something2: Int
var something3: Int
var something4: Int
var something5: Int
fun setSomething6(value: Int)
}
internal open class B {
open val fromB1: String
get() {
return ""
}
open var fromB2: String
get() {
return ""
}
set(value: String) {
}
open var fromB3: String
get() {
return ""
}
set(value: String) {
}
open var fromB4: String
get() {
return ""
}
set(value: String) {
}
open fun setFromB5(value: String) {
}
}
internal abstract class C(override val something1: Int) : B(), I {
private var mySomething6: Int = 0
override val something2: Int
get() {
return 0
}
override var something3: Int
get() {
return 0
}
set(value: Int) {
}
override var something4: Int
get() {
return 0
}
override var something5: Int
set(value: Int) {
}
fun getSomething6(): Int {
return mySomething6
}
override fun setSomething6(value: Int) {
mySomething6 = value
}
override val fromB1: String
get() {
return super.fromB1
}
override var fromB2: String
get() {
return super.fromB2
}
set(value: String) {
super.fromB2 = value
}
override var fromB3: String
get() {
return super.fromB3
}
override var fromB4: String
set(value: String) {
super.fromB4 = value
}
val fromB5: String
get() {
return ""
}
override fun setFromB5(value: String) {
super.setFromB5(value)
}
}
@@ -0,0 +1,103 @@
import kotlinApi.KotlinClassWithProperties;
import javaApi.JavaClassWithProperties;
import org.jetbrains.annotations.NotNull;
import java.lang.Override;
import java.lang.String;
class A extends KotlinClassWithProperties {
@NotNull
@Override
public String getSomeVar1() {
return super.getSomeVar1();
}
@Override
public void setSomeVar1(@NotNull String s) {
super.setSomeVar1(s);
}
@NotNull
@Override
public String getSomeVar2() {
return super.getSomeVar2();
}
@Override
public void setSomeVar3(@NotNull String s) {
super.setSomeVar3(s);
}
@NotNull
@Override
public String getSomeVar4() {
return super.getSomeVar4();
}
@NotNull
@Override
public String getSomeVal() {
return super.getSomeVal();
}
@Override
public void getSomething1() {
super.getSomething1();
}
@Override
public void getSomething2() {
super.getSomething2();
}
@Override
public void setSomething2(int value) {
super.setSomething2(value);
}
@Override
public void getSomething3() {
super.getSomething3();
}
@Override
public void setSomething4(int value) {
super.setSomething4(value);
}
}
class B extends JavaClassWithProperties {
@Override
public int getValue1() {
return super.getValue1();
}
@Override
public int getValue2() {
return super.getValue2();
}
@Override
public void setValue2(int value) {
super.setValue2(value);
}
@Override
public int getValue3() {
return super.getValue3();
}
@Override
public void setValue4(int value) {
super.setValue4(value);
}
}
class C extends A {
@NotNull
@Override
public String getSomeVar1() {
return super.getSomeVar1();
}
}
@@ -0,0 +1,85 @@
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
import kotlinApi.KotlinClassWithProperties
import javaApi.JavaClassWithProperties
internal open class A : KotlinClassWithProperties() {
override var someVar1: String
get() {
return super.someVar1
}
set(s: String) {
super.someVar1 = s
}
override var someVar2: String
get() {
return super.someVar2
}
override var someVar3: String
set(s: String) {
super.someVar3 = s
}
override var someVar4: String
get() {
return super.someVar4
}
override val someVal: String
get() {
return super.someVal
}
override fun getSomething1() {
super.getSomething1()
}
override fun getSomething2() {
super.getSomething2()
}
override fun setSomething2(value: Int) {
super.setSomething2(value)
}
override fun getSomething3() {
super.getSomething3()
}
override fun setSomething4(value: Int) {
super.setSomething4(value)
}
}
internal class B : JavaClassWithProperties() {
override fun getValue1(): Int {
return super.getValue1()
}
override fun getValue2(): Int {
return super.getValue2()
}
override fun setValue2(value: Int) {
super.setValue2(value)
}
override fun getValue3(): Int {
return super.getValue3()
}
override fun setValue4(value: Int) {
super.setValue4(value)
}
}
internal class C : A() {
override var someVar1: String
get() {
return super.someVar1
}
}
+5 -4
View File
@@ -1,5 +1,5 @@
internal class A {
private var i: Int? = getByte().toInt()
private var i: Int? = byte.toInt()
fun foo() {
i = 10
@@ -7,8 +7,9 @@ internal class A {
companion object {
fun getByte(): Byte {
return 0
}
val byte: Byte
get() {
return 0
}
}
}
+1 -1
View File
@@ -1 +1 @@
internal abstract fun getNoofGears(): Int
internal abstract val noofGears: Int
+3 -2
View File
@@ -1,2 +1,3 @@
fun getT(): T {
}
val t: T
get() {
}
+4 -3
View File
@@ -1,3 +1,4 @@
fun getString(): String {
return ""
}
val string: String
get() {
return ""
}
@@ -1,3 +1,4 @@
fun isTrue(): Boolean {
return true
}
val isTrue: Boolean
get() {
return true
}
+4 -3
View File
@@ -1,3 +1,4 @@
fun getString(): String {
return ""
}
val string: String
get() {
return ""
}
+5 -4
View File
@@ -1,6 +1,7 @@
internal class Test {
fun getInt(): Int {
val b = 10
return b.toInt()
}
val int: Int
get() {
val b = 10
return b.toInt()
}
}
@@ -1,10 +1,10 @@
internal interface I {
fun getString(): String?
val string: String?
}
internal class C {
fun foo(i: I) {
if (i.getString() == null) {
if (i.string == null) {
println("null")
}
}
@@ -1,10 +1,10 @@
internal interface I {
fun getString(): String?
val string: String?
}
internal class C {
fun foo(i: I) {
val result = i.getString()
val result = i.string
if (result != null) {
print(result)
}
@@ -1,10 +1,10 @@
internal interface I {
fun getString(): String?
val string: String?
}
internal class C {
fun foo(i: I) {
val result = i.getString()
val result = i.string
if (result != null) {
print(result)
}
@@ -1,10 +1,10 @@
internal interface I {
fun getString(): String
val string: String
}
internal class C {
fun foo(i: I, b: Boolean) {
var result: String? = i.getString()
var result: String? = i.string
if (b) result = null
if (result != null) {
print(result)
@@ -1,16 +1,18 @@
internal interface I {
fun getInt(): Int
val int: Int
}
internal class C {
fun getObject(): Any? {
foo(object : I {
override fun getInt(): Int {
return 0
}
})
return string
}
val `object`: Any?
get() {
foo(object : I {
override val int: Int
get() {
return 0
}
})
return string
}
fun foo(i: I) {
}
@@ -1,4 +1,4 @@
internal interface INode {
fun getTag(): Tag
val tag: Tag
fun toKotlin(): String
}
+1 -1
View File
@@ -6,6 +6,6 @@ class AAA {
}
fun bar(b: B) {
println(b.YY)
println(b.yy)
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
internal class B {
fun foo(a: AAA) {
a.x = a.x + 1
YY += "a"
yy += "a"
}
var YY = ""
var yy = ""
private set
}