Generate bridges for property accessors

Use existing FunctionCodegen.generateBridgeIfNeeded() on property getters &
setters

 #KT-2920 Fixed
This commit is contained in:
Alexander Udalov
2012-10-09 15:57:31 +04:00
parent 7d28ee4342
commit e869568196
7 changed files with 110 additions and 24 deletions
@@ -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