| interface BK { | |
| fun x() : Int = 50 | |
| } | |
| interface K : BK { | |
| override fun x() : Int = super.x() * 2 | |
| } | |
| open class M() { | |
| open fun x() : Int = 10 | |
| } | |
| open class N() : M(), K { | |
| override fun x() : Int = 20 | |
| open inner class C() : K { | |
| fun test1() = x() | |
| fun test2() = super<M>@N.x() | |
| fun test3() = super<K>@N.x() | |
| fun test4() = super<K>.x() | |
| } | |
| } | |
| fun box(): String { | |
| if (N().C().test1() != 100) return "test1 fail"; | |
| if (N().C().test2() != 10) return "test2 fail"; | |
| if (N().C().test3() != 100) return "test3 fail"; | |
| if (N().C().test4() != 100) return "test4 fail"; | |
| return "OK"; | |
| } |