Unwrap fake override of original

This fixes a couple of verify errors related to the order of supertypes in the
class declaration
This commit is contained in:
Alexander Udalov
2013-12-09 15:46:19 +04:00
parent 68961004a5
commit ee554d2e2f
6 changed files with 152 additions and 2 deletions
@@ -0,0 +1,31 @@
trait T {
fun foo(): Unit
}
open class A : T {
override fun foo() {}
}
trait B : T
class C : A(), B
class D : B, A()
class E : A(), B, T
class F : B, A(), T
class G : A(), T, B
class H : B, T, A()
class I : T, A(), B
class J : T, B, A()
fun box(): String {
C().foo()
D().foo()
E().foo()
F().foo()
G().foo()
H().foo()
I().foo()
J().foo()
return "OK"
}
@@ -0,0 +1,35 @@
trait T {
fun foo(): Unit
}
open class A : T {
override fun foo(): Unit {}
}
class B : A(), T
class C : T, A()
trait U : T
class D : U, A()
class E : A(), U
class F : U, T, A()
class G : T, U, A()
class H : U, A(), T
class I : T, A(), U
class J : A(), U, T
class K : A(), T, U
fun box(): String {
B().foo()
C().foo()
D().foo()
E().foo()
F().foo()
G().foo()
H().foo()
I().foo()
J().foo()
K().foo()
return "OK"
}
@@ -0,0 +1,37 @@
trait T {
val foo: String
}
open class A : T {
override val foo: String = ""
}
class B : A(), T
class C : T, A()
trait U : T
class D : U, A()
class E : A(), U
class F : U, T, A()
class G : T, U, A()
class H : U, A(), T
class I : T, A(), U
class J : A(), U, T
class K : A(), T, U
fun box(): String {
B().foo
C().foo
D().foo
E().foo
F().foo
G().foo
H().foo
I().foo
J().foo
K().foo
return "OK"
}
@@ -0,0 +1,18 @@
trait T {
var result: String
}
open class A : T {
override var result: String
get() = ""
set(value) {}
}
class B : A(), T
class C : T, A()
fun box(): String {
B().result = ""
C().result = ""
return "OK"
}