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

32 lines
920 B
Kotlin

package foo
open class A(val barVal: Int) {
open fun bar(): Int = 1
open fun bar2(): Int = barVal + 1
open fun bar3(t: Int) = t + 2
open fun bar4(t: Int = 1) = t + 3 + barVal
}
class B : A(1) {
override fun bar(): Int {
return super.bar() + 10;
}
override fun bar2(): Int {
return super<A>.bar2() + 10;
}
override fun bar3(t: Int): Int {
return super.bar3(t + 10);
}
override fun bar4(t: Int): Int {
return super<A>.bar4() + 10;
}
}
fun box(): String {
val b = B()
if (b.bar() != 11) return "Simple call fail. b.bar() is ${b.bar()}"
if (b.bar2() != 12) return "Wrong 'this' in supercall. b.bar2() is ${b.bar2()}"
if (b.bar3(2) != 14) return "Supercall with parameter fail. b.bar3(2) is ${b.bar3(2)}"
if (b.bar4() != 15) return "Supercall with default parameter & this fault. b.bar4() is ${b.bar4()}"
return "OK"
}