Files
kotlin-fork/compiler/testData/codegen/box/super/innerClassQualifiedPropertyAccess.kt
T
Ting-Yuan Huang 1c3b895fc0 Generate accessors for super calls if necessary
Current implementation of calls with super qualifier relies on
invokespecial, which has some more constraints than regular virtual
invocations. When those constraints aren't met, accessors are needed.
2019-05-10 08:57:37 +02:00

46 lines
827 B
Kotlin
Vendored

interface T {
open val baz: String
get() = "T.baz"
}
open class A {
open val bar: String
get() = "OK"
open val boo: String
get() = "OK"
}
open class B : A(), T {
override val bar: String
get() = "B"
override val baz: String
get() = "B.baz"
inner class E {
val bar: String
get() = super<A>@B.bar + super@B.bar + super@B.baz
}
}
class C : B() {
override val bar: String
get() = "C"
override val boo: String
get() = "C"
inner class D {
val bar: String
get() = super<B>@C.bar + super<B>@C.boo
}
}
fun box(): String {
var r = ""
r = B().E().bar
if (r != "OKOKT.baz") return "fail 1; r = $r"
r = C().D().bar
if (r != "BOK") return "fail 2; r = $r"
return "OK"
}