JVM_IR: optimize out redundant delegated property receiver fields
Now this:
class C {
val x = something
val y by x::property
}
is *exactly* the same as this:
class C {
val x = something
val y get() = x.property
}
(plus a `getY$delegate` method)
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
// WITH_RUNTIME
|
||||
val String.foo: String
|
||||
get() = this
|
||||
|
||||
abstract class A {
|
||||
abstract val x: String
|
||||
|
||||
val y by x::foo
|
||||
}
|
||||
|
||||
var storage = "OK"
|
||||
|
||||
class B : A() {
|
||||
override var x: String
|
||||
get() = storage
|
||||
set(value) { storage = value }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val b = B()
|
||||
b.x = "fail"
|
||||
return b.y
|
||||
}
|
||||
Reference in New Issue
Block a user