| // TARGET_BACKEND: JVM | |
| // ISSUE: KT-54487, KT-63350 | |
| // FILE: p/I.java | |
| package p; | |
| public interface I { | |
| String foo(); | |
| } | |
| // FILE: p/I2.java | |
| package p; | |
| public interface I2 extends I {} | |
| // FILE: p/C.java | |
| package p; | |
| public class C { | |
| static class Impl implements I { | |
| public String foo() { | |
| return "OK"; | |
| } | |
| } | |
| static class C1Base extends Impl {} | |
| static class C2Base extends Impl {} | |
| public static class C1 extends C1Base implements I2 {} | |
| public static class C2 extends C2Base implements I2 {} | |
| public static final C1 c1 = new C1(); | |
| public static final C2 c2 = new C2(); | |
| } | |
| // FILE: test.kt | |
| import p.C | |
| fun <T> union(a: T, b: T) = a | |
| fun box() = | |
| // receiver type = I2 & C.Impl | |
| // method resolved to C.Impl.foo, but in backend IR the resulting call is I2.foo | |
| union(C.c1, C.c2).foo() |