| fun interface Base { | |
| fun doStuff(): String | |
| } | |
| fun interface I : Base | |
| fun interface Proxy : I { | |
| override fun doStuff(): String = doStuffInt().toString() | |
| fun doStuffInt(): Int | |
| } | |
| fun runBase(b: Base) = b.doStuff() | |
| fun runI(i: I) = i.doStuff() | |
| fun runProxy(p: Proxy) = p.doStuff() | |
| fun box(): String { | |
| if (runI { "i" } != "i") return "fail1" | |
| if (runProxy { 10 } != "10") return "fail2" | |
| return runBase { "OK" } | |
| } |