| interface D1 { | |
| fun foo(): Any | |
| } | |
| interface D2 { | |
| fun foo(): Number | |
| } | |
| interface F3 : D1, D2 | |
| open class D4 { | |
| fun foo(): Int = 42 | |
| } | |
| class F5 : F3, D4() | |
| fun box(): String { | |
| val z = F5() | |
| var result = z.foo() | |
| val d4: D4 = z | |
| val f3: F3 = z | |
| val d2: D2 = z | |
| val d1: D1 = z | |
| result += d4.foo() | |
| result += f3.foo() as Int | |
| result += d2.foo() as Int | |
| result += d1.foo() as Int | |
| return if (result == 5 * 42) "OK" else "Fail: $result" | |
| } |