// TARGET_BACKEND: JVM_IR // ISSUE: KT-65333 // FILE: BaseClass.java public class BaseClass { public class Inner { public String box() { return "BaseClass"; } } } // FILE: BaseInterface.java public interface BaseInterface { class Inner { public String box() { return "BaseInterface"; } } } // FILE: main.kt class A: BaseClass(), BaseInterface class B : BaseClass(), BaseInterface { class Inner { fun box(): String = "B" } } class C : BaseClass(), BaseInterface { inner class Inner { fun box(): String = "C" } } object D : BaseClass(), BaseInterface object E : BaseClass(), BaseInterface { class Inner { fun box(): String = "E" } } object F : BaseClass() object G : BaseClass() { class Inner { fun box(): String = "G" } } object H : BaseInterface object I : BaseInterface { class Inner { fun box(): String = "I" } } fun check(actual: String, expected: String) { if (expected != actual) { throw AssertionError("\nExpected: $expected\nActual: $actual\n") } } fun box(): String { check(A().Inner().box(), "BaseClass") // check(A.Inner().box(), "BaseInterface") // check(B().Inner().box(), "BaseInterface") check(B.Inner().box(), "B") check(C().Inner().box(), "C") // check(C.Inner().box(), "BaseInterface") check(D.Inner().box(), "BaseClass") check(E.Inner().box(), "E") check(F.Inner().box(), "BaseClass") check(G.Inner().box(), "G") // check(H.Inner().box(), "E") check(I.Inner().box(), "I") return "OK" }