[FIR2IR] Change receiver of field of base class in derived class in property reference

This commit is contained in:
Dmitriy Novozhilov
2021-03-29 10:25:33 +03:00
parent 38ab37d7eb
commit a9399535fb
7 changed files with 250 additions and 6 deletions
@@ -0,0 +1,39 @@
// TARGET_BACKEND: JVM_IR
// DUMP_IR
// FULL_JDK
// WITH_REFLECT
// FILE: bar/Base.java
package bar;
import foo.A;
public abstract class Base {
protected A a = new A("fail");
protected void foo() {}
}
// FILE: main.kt
package foo
import kotlin.reflect.jvm.javaField
import bar.Base
class A(val s: String)
class Derived : Base() {
override fun foo() {
// ir: resolved to fake-override field Derived.a
(Derived::a).javaField!![this] = A("OK")
}
fun box(): String {
foo()
return a.s
}
}
fun box(): String {
return Derived().box()
}