Generate accessor with delegation to super when it's necessary

This commit is contained in:
Valentin Kipyatkov
2015-09-23 14:41:35 +03:00
parent b1b5af8e1e
commit ee5a853faa
5 changed files with 122 additions and 39 deletions
@@ -15,6 +15,12 @@ interface I {
void setSomething6(int value);
}
interface I1 extends I {
void setSomething1(int value);
int getSomething6();
}
class B {
public String getFromB1() {
return "";
+20 -4
View File
@@ -1,7 +1,5 @@
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// ERROR: Abstract member cannot be accessed directly
// ERROR: Abstract member cannot be accessed directly
internal interface I {
val something1: Int
@@ -16,6 +14,12 @@ internal interface I {
fun setSomething6(value: Int)
}
internal interface I1 : I {
fun setSomething1(value: Int)
val something6: Int
}
internal open class B {
open val fromB1: String
get() {
@@ -66,8 +70,14 @@ internal abstract class C(override val something1: Int) : B(), I {
get() {
return 0
}
set(value: Int) {
super.something4 = value
}
override var something5: Int
get() {
return super.something5
}
set(value: Int) {
}
@@ -97,8 +107,14 @@ internal abstract class C(override val something1: Int) : B(), I {
get() {
return super.fromB3
}
set(value: String) {
super.fromB3 = value
}
override var fromB4: String
get() {
return super.fromB4
}
set(value: String) {
super.fromB4 = value
}
@@ -1,9 +1,3 @@
// ERROR: Property must be initialized
// ERROR: Property must be initialized
// 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
import javaApi.JavaClassDerivedFromKotlinClassWithProperties
@@ -21,8 +15,14 @@ internal open class A : KotlinClassWithProperties() {
get() {
return super.someVar2
}
set(value: String) {
super.someVar2 = value
}
override var someVar3: String
get() {
return super.someVar3
}
set(s: String) {
super.someVar3 = s
}
@@ -31,6 +31,9 @@ internal open class A : KotlinClassWithProperties() {
get() {
return super.someVar4
}
set(value: String) {
super.someVar4 = value
}
override val someVal: String
get() {
@@ -85,6 +88,9 @@ internal class C : A() {
get() {
return super.someVar1
}
set(value: String) {
super.someVar1 = value
}
}
internal class D : JavaClassDerivedFromKotlinClassWithProperties() {
@@ -92,8 +98,14 @@ internal class D : JavaClassDerivedFromKotlinClassWithProperties() {
get() {
return "a"
}
set(value: String) {
super.someVar1 = value
}
override var someVar2: String
get() {
return super.someVar2
}
set(value: String) {
}