open class DeeperBase { open fun deeperBaseFun(): String = "DeeperBase.deeperBaseFun()" open val deeperBaseProp: String get() = "DeeperBase.deeperBaseProp" } open class DeepBase : DeeperBase() { } interface DeeperInterface { fun deeperInterfaceFun(): String = "DeeperInterface.deeperInterfaceFun()" val deeperInterfaceProp: String get() = "DeeperInterface.deeperInterfaceProp" } interface DeepInterface : DeeperInterface { fun deepInterfaceFun(): String = "DeepInterface.deepInterfaceFun()" } class DeepDerived : DeepBase(), DeepInterface { override fun deeperBaseFun(): String = "DeepDerived.deeperBaseFun()" override val deeperBaseProp: String get() = "DeepDerived.deeperBaseProp" override fun deeperInterfaceFun(): String = "DeepDerived.deeperInterfaceFun()" override val deeperInterfaceProp: String get() = "DeepDerived.deeperInterfaceProp" override fun deepInterfaceFun(): String = "DeepDerived.deepInterfaceFun()" fun callsSuperDeeperBaseFun(): String = super.deeperBaseFun() fun getsSuperDeeperBaseProp(): String = super.deeperBaseProp fun callsSuperDeepInterfaceFun(): String = super.deepInterfaceFun() fun callsSuperDeeperInterfaceFun(): String = super.deeperInterfaceFun() fun getsSuperDeeperInterfaceProp(): String = super.deeperInterfaceProp } fun box(): String { val dd = DeepDerived() val test1 = dd.callsSuperDeeperBaseFun() if (test1 != "DeeperBase.deeperBaseFun()") return "Failed: dd.callsSuperDeeperBaseFun()==$test1" val test2 = dd.getsSuperDeeperBaseProp() if (test2 != "DeeperBase.deeperBaseProp") return "Failed: dd.getsSuperDeeperBaseProp()==$test2" val test3 = dd.callsSuperDeepInterfaceFun() if (test3 != "DeepInterface.deepInterfaceFun()") return "Failed: dd.callsSuperDeepInterfaceFun()==$test3" val test4 = dd.callsSuperDeeperInterfaceFun() if (test4 != "DeeperInterface.deeperInterfaceFun()") return "Failed: dd.callsSuperDeeperInterfaceFun()==$test4" val test5 = dd.getsSuperDeeperInterfaceProp() if (test5 != "DeeperInterface.deeperInterfaceProp") return "Failed: dd.getsSuperDeeperInterfaceProp()==$test5" return "OK" }