| 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" | |
| } |