FIR Java: correctly handle overridden Kotlin properties in use-site scope

This commit is contained in:
Mikhail Glukhikh
2019-05-24 13:44:04 +03:00
parent 56435fa283
commit 806d2d628c
9 changed files with 121 additions and 47 deletions
@@ -0,0 +1,4 @@
public open class JavaClass : R|Derived| {
public constructor(): R|JavaClass|
}
@@ -0,0 +1,7 @@
open class Base {
open val some: String get() = "Base"
}
open class Derived : Base() {
override val some: String get() = "Derived"
}
@@ -0,0 +1,23 @@
FILE: Base.kt
public open class Base : R|kotlin/Any| {
public constructor(): R|Base| {
super<R|kotlin/Any|>()
}
public open val some: R|kotlin/String|
public get(): R|kotlin/String| {
^ String(Base)
}
}
public open class Derived : R|Base| {
public constructor(): R|Derived| {
super<R|Base|>()
}
public open override val some: R|kotlin/String|
public get(): R|kotlin/String| {
^ String(Derived)
}
}
@@ -0,0 +1,3 @@
public class JavaClass extends Derived {
}
@@ -0,0 +1,4 @@
fun test() {
val jc = JavaClass()
val result = jc.some
}
@@ -0,0 +1,5 @@
FILE: Test.kt
public final fun test(): R|kotlin/Unit| {
lval jc: R|JavaClass| = R|/JavaClass.JavaClass|()
lval result: R|kotlin/String| = R|<local>/jc|.R|/Derived.some|
}