Files
kotlin/compiler/testData/codegen/box/super/innerClassQualifiedFunctionCall.kt
2019-11-19 11:00:09 +03:00

48 lines
1012 B
Kotlin
Vendored

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