Files
kotlin-fork/js/js.translator/testData/box/expression/equals/superEquals.kt
T
2018-09-12 09:49:25 +03:00

53 lines
990 B
Kotlin
Vendored

// EXPECTED_REACHABLE_NODES: 1303
package foo
open class A {
var log = ""
var called = false
override fun equals(other: Any?): Boolean {
if (called) fail("recursion detected")
log += "A.equals;"
called = true
val result = super.equals(other)
called = false
return result
}
}
class B : A() {
override fun equals(other: Any?): Boolean {
log += "B.equals;"
if (other == null) return false
return super.equals(other)
}
}
fun box(): String {
val a = A()
testFalse { a == A() }
assertEquals("A.equals;", a.log)
val b1 = B()
testTrue { b1 == b1 }
assertEquals("B.equals;A.equals;", b1.log)
val b2 = B()
testFalse { b2 == B() }
assertEquals("B.equals;A.equals;", b2.log)
val b3 = B()
testFalse { b3 == null }
assertEquals("", b3.log)
val b4 = B()
testFalse { b4.equals(null) }
assertEquals("B.equals;", b4.log)
return "OK"
}