Generate bridges for property accessors
Use existing FunctionCodegen.generateBridgeIfNeeded() on property getters & setters #KT-2920 Fixed
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
open class A<T> {
|
||||
open var x: T = "Fail" as T
|
||||
get
|
||||
}
|
||||
|
||||
class B : A<String>() {
|
||||
override var x: String = "Fail"
|
||||
set
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a: A<String> = B()
|
||||
a.x = "OK"
|
||||
return a.x
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
trait A<O, K> {
|
||||
val o: O
|
||||
val k: K
|
||||
}
|
||||
|
||||
trait B<K> : A<String, K>
|
||||
|
||||
trait C<O> : A<O, String>
|
||||
|
||||
class D : B<String>, C<String> {
|
||||
override val o = "O"
|
||||
override val k = "K"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a: A<String, String> = D()
|
||||
return a.o + a.k
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
trait A<T> {
|
||||
var v: T
|
||||
}
|
||||
|
||||
class B : A<String> {
|
||||
override var v: String = "Fail"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a: A<String> = B()
|
||||
a.v = "OK"
|
||||
return a.v
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
open class A<T>(val t: T) {
|
||||
open val foo: T = t
|
||||
}
|
||||
|
||||
open class B : A<String>("Fail")
|
||||
|
||||
class Z : B() {
|
||||
override val foo = "OK"
|
||||
}
|
||||
|
||||
|
||||
fun box() = (Z() : A<String>).foo
|
||||
@@ -0,0 +1,9 @@
|
||||
trait Tr<T> {
|
||||
val v: T
|
||||
}
|
||||
|
||||
class C : Tr<String> {
|
||||
override val v = "OK"
|
||||
}
|
||||
|
||||
fun box() = C().v
|
||||
Reference in New Issue
Block a user