Files
kotlin-fork/js/js.translator/testData/inheritance/cases/crazyInheritance.kt
T
2014-03-11 20:04:00 +04:00

56 lines
1.1 KiB
Kotlin

package foo
open class A {
open fun f1() = "A1"
open fun f2() = "A2"
open fun f3() = "A3"
open fun f4() = "A4"
fun getSum(): String {
return "${f1()}|${f2()}|${f3()}|${f4()}"
}
}
trait T : A {
override fun f1() = "T1"
override fun f2() = "T2"
}
trait B : A {
override fun f1() = "B1"
override fun f3() = "B3"
}
trait N : B, T {
override fun f1() = "N1"
}
trait X {
fun f4() = "X4"
}
class C : A(), N, X {
override fun f4() = "C4"
}
fun box(): String {
val a = A()
val t = object : T, A() {
}
val b = object : B, A() {
}
val n = object : N, A() {
}
val x = object : X {
}
val c = C()
if (a.getSum() != "A1|A2|A3|A4") return "Bad a.getSum(), it: ${a.getSum()}"
if (t.getSum() != "T1|T2|A3|A4") return "Bad t.getSum(), it: ${t.getSum()}"
if (b.getSum() != "B1|A2|B3|A4") return "Bad b.getSum(), it: ${b.getSum()}"
if (n.getSum() != "N1|T2|B3|A4") return "Bad n.getSum(), it: ${n.getSum()}"
if (c.getSum() != "N1|T2|B3|C4") return "Bad c.getSum(), it: ${c.getSum()}"
if (x.f4() != "X4") return "Bad x.f4(), it: ${x.f4()}"
return "OK"
}