blob: 03b0f783a5c23e7bca70433aa3b973fba4132709 [file]
// 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"
}