blob: 78c887efbbc8b9938a9ed82eb5b2d8b3a9165199 [file]
// TARGET_BACKEND: JVM
// 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 in K1,
// but to base field Base.a in K2
// However, box() works correctly in both cases
(Derived::a).javaField!![this] = A("OK")
}
fun box(): String {
foo()
return a.s
}
}
fun box(): String {
return Derived().box()
}