Support loading methods from Java as common properties overrides
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
public class J extends A {
|
||||
|
||||
public boolean okField = false;
|
||||
|
||||
public int getValProp() {
|
||||
return 123;
|
||||
}
|
||||
|
||||
public int getVarProp() {
|
||||
return 456;
|
||||
}
|
||||
|
||||
public void setVarProp(int x) {
|
||||
okField = true;
|
||||
}
|
||||
|
||||
public int isProp() {
|
||||
return 789;
|
||||
}
|
||||
|
||||
public void setProp(int x) {
|
||||
okField = true;
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
open class A {
|
||||
open val valProp: Int = -1
|
||||
open var varProp: Int = -1
|
||||
open var isProp: Int = -1
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val j = J()
|
||||
val a: A = j
|
||||
|
||||
if (j.valProp != 123) return "fail 1"
|
||||
if (a.valProp != 123) return "fail 2"
|
||||
|
||||
j.varProp = -1
|
||||
if (!j.okField) return "fail 3"
|
||||
j.okField = false
|
||||
|
||||
a.varProp = -1
|
||||
if (!j.okField) return "fail 4"
|
||||
j.okField = false
|
||||
|
||||
if (j.varProp != 456) return "fail 5"
|
||||
if (a.varProp != 456) return "fail 6"
|
||||
|
||||
j.isProp = -1
|
||||
if (!j.okField) return "fail 7"
|
||||
j.okField = false
|
||||
|
||||
a.isProp = -1
|
||||
if (!j.okField) return "fail 8"
|
||||
j.okField = false
|
||||
|
||||
if (j.isProp != 789) return "fail 9"
|
||||
if (a.isProp != 789) return "fail 10"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// FILE: A.java
|
||||
|
||||
public interface A extends B {
|
||||
public int getFoo();
|
||||
public void setFoo(int x);
|
||||
}
|
||||
|
||||
// FILE: BImpl.java
|
||||
|
||||
public class BImpl implements B {
|
||||
public int getFoo() {}
|
||||
public void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
var foo: Int
|
||||
}
|
||||
|
||||
interface C1 : A {
|
||||
override var foo: Int
|
||||
}
|
||||
|
||||
class D : C1, BImpl()
|
||||
|
||||
fun foo() {
|
||||
BImpl().foo = BImpl().foo + 1
|
||||
D().foo = D().foo + 2
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
|
||||
public interface A : B {
|
||||
public abstract override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B {
|
||||
public abstract var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class BImpl : B {
|
||||
public constructor BImpl()
|
||||
public open override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface C1 : A {
|
||||
public abstract override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class D : C1, BImpl {
|
||||
public constructor D()
|
||||
public open override /*2*/ /*fake_override*/ var foo: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
// FILE: A.java
|
||||
|
||||
public class A extends B {
|
||||
public int isFoo() { return 0; }
|
||||
public void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: F.java
|
||||
|
||||
public class F extends B {
|
||||
public final int isFoo() { return 0; }
|
||||
public final void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
open class B {
|
||||
open var isFoo: Int = 1
|
||||
}
|
||||
|
||||
class C1 : A() {
|
||||
override var isFoo: Int = 2
|
||||
}
|
||||
|
||||
class C2 : F() {
|
||||
<!OVERRIDING_FINAL_MEMBER!>override<!> var isFoo: Int = 3
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package
|
||||
|
||||
public open class A : B {
|
||||
public constructor A()
|
||||
public open override /*1*/ var isFoo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class B {
|
||||
public constructor B()
|
||||
public open var isFoo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C1 : A {
|
||||
public constructor C1()
|
||||
public open override /*1*/ var isFoo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C2 : F {
|
||||
public constructor C2()
|
||||
public open override /*1*/ var isFoo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class F : B {
|
||||
public constructor F()
|
||||
public final override /*1*/ var isFoo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// FILE: A.java
|
||||
|
||||
public class A extends B {
|
||||
public int getFoo() { return 0; }
|
||||
}
|
||||
|
||||
// FILE: F.java
|
||||
|
||||
public class F extends B {
|
||||
public final int getFoo() { return 0; }
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
open class B {
|
||||
open val foo: Int = 1
|
||||
}
|
||||
|
||||
class C1 : A() {
|
||||
override val foo: Int = 2
|
||||
}
|
||||
|
||||
class C2 : F() {
|
||||
<!OVERRIDING_FINAL_MEMBER!>override<!> val foo: Int = 3
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package
|
||||
|
||||
public open class A : B {
|
||||
public constructor A()
|
||||
public open override /*1*/ val foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class B {
|
||||
public constructor B()
|
||||
public open val foo: kotlin.Int = 1
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C1 : A {
|
||||
public constructor C1()
|
||||
public open override /*1*/ val foo: kotlin.Int = 2
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C2 : F {
|
||||
public constructor C2()
|
||||
public open override /*1*/ val foo: kotlin.Int = 3
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class F : B {
|
||||
public constructor F()
|
||||
public final override /*1*/ val foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
// FILE: A.java
|
||||
|
||||
public class A extends B {
|
||||
public int getFoo() { return 0; }
|
||||
public void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: F.java
|
||||
|
||||
public class F extends B {
|
||||
public final int getFoo() { return 0; }
|
||||
public final void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: ConflictingModality.java
|
||||
|
||||
public class ConflictingModality extends B {
|
||||
public final int getFoo() { return 0; }
|
||||
public abstract void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: ConflictingVisibility.java
|
||||
|
||||
public class ConflictingVisibility extends B {
|
||||
public int getFoo() { return 0; }
|
||||
protected void setFoo(int x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
open class B {
|
||||
// check that final is not overridden
|
||||
open protected var foo: Int = 1
|
||||
}
|
||||
|
||||
class C1 : A() {
|
||||
override var foo: Int = 2
|
||||
}
|
||||
|
||||
class C2 : F() {
|
||||
<!OVERRIDING_FINAL_MEMBER!>override<!> var foo: Int = 3
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package
|
||||
|
||||
public open class A : B {
|
||||
public constructor A()
|
||||
public open override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class B {
|
||||
public constructor B()
|
||||
protected open var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C1 : A {
|
||||
public constructor C1()
|
||||
public open override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C2 : F {
|
||||
public constructor C2()
|
||||
public open override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class ConflictingModality : B {
|
||||
public constructor ConflictingModality()
|
||||
protected open override /*1*/ /*fake_override*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun getFoo(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract fun setFoo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class ConflictingVisibility : B {
|
||||
public constructor ConflictingVisibility()
|
||||
public open override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class F : B {
|
||||
public constructor F()
|
||||
public final override /*1*/ var foo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ public fun foo(): kotlin.Unit
|
||||
|
||||
@kotlin.jvm.PurelyImplements(value = "kotlin.MutableCollection") public/*package*/ open class A</*0*/ T : kotlin.Any!> : java.util.AbstractCollection<T!>, kotlin.MutableCollection<T> {
|
||||
public/*package*/ constructor A</*0*/ T : kotlin.Any!>()
|
||||
@java.lang.Override() public open override /*2*/ val size: kotlin.Int
|
||||
public open override /*2*/ val size: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun add(/*0*/ e: T): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun addAll(/*0*/ c: kotlin.Collection<T>): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun clear(): kotlin.Unit
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/purelyImplementedCollection/customClassMutableList.txt
Vendored
+1
-1
@@ -6,7 +6,7 @@ public fun foo(): kotlin.Unit
|
||||
@kotlin.jvm.PurelyImplements(value = "kotlin.MutableList") public/*package*/ open class A</*0*/ T : kotlin.Any!> : java.util.AbstractList<T!>, kotlin.MutableList<T> {
|
||||
public/*package*/ constructor A</*0*/ T : kotlin.Any!>()
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var modCount: kotlin.Int
|
||||
@java.lang.Override() public open override /*2*/ val size: kotlin.Int
|
||||
public open override /*2*/ val size: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun add(/*0*/ e: T): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun add(/*0*/ index: kotlin.Int, /*1*/ element: T): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun addAll(/*0*/ c: kotlin.Collection<T>): kotlin.Boolean
|
||||
|
||||
Vendored
+1
-1
@@ -6,7 +6,7 @@ public val y: B<kotlin.String>
|
||||
@kotlin.jvm.PurelyImplements(value = "") public open class A</*0*/ T : kotlin.Any!> : java.util.AbstractList<T!> {
|
||||
public constructor A</*0*/ T : kotlin.Any!>()
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var modCount: kotlin.Int
|
||||
@java.lang.Override() public open override /*1*/ val size: kotlin.Int
|
||||
public open override /*1*/ val size: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun add(/*0*/ e: T!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun add(/*0*/ index: kotlin.Int, /*1*/ element: T!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ c: kotlin.Collection<T!>): kotlin.Boolean
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ public fun foo(): kotlin.Unit
|
||||
@kotlin.jvm.PurelyImplements(value = "kotlin.MutableList") public/*package*/ open class A</*0*/ T : kotlin.Any!, /*1*/ V : kotlin.Any!> : java.util.AbstractList<T!> {
|
||||
public/*package*/ constructor A</*0*/ T : kotlin.Any!, /*1*/ V : kotlin.Any!>()
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var modCount: kotlin.Int
|
||||
@java.lang.Override() public open override /*1*/ val size: kotlin.Int
|
||||
public open override /*1*/ val size: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun add(/*0*/ e: T!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun add(/*0*/ index: kotlin.Int, /*1*/ element: T!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ c: kotlin.Collection<T!>): kotlin.Boolean
|
||||
|
||||
Reference in New Issue
Block a user