39 lines
1008 B
Kotlin
Vendored
39 lines
1008 B
Kotlin
Vendored
// EXPECTED_REACHABLE_NODES: 1289
|
|
package foo
|
|
|
|
inline fun String.charCodeAt(i: Int): Int = asDynamic().charCodeAt(i)
|
|
|
|
// Because String in JS doesn't have hashCode method
|
|
fun String.myHashCode(): Int {
|
|
var hash = 0
|
|
|
|
for (i in 0..length - 1) {
|
|
hash = 31 * hash + charCodeAt(i)
|
|
}
|
|
|
|
return hash
|
|
}
|
|
|
|
class Foo(val name: String) {
|
|
override fun equals(other: Any?): Boolean {
|
|
if (other is Foo) return name == other.name
|
|
return this === other
|
|
}
|
|
override fun hashCode(): Int = name.myHashCode()
|
|
override fun toString(): String = "Foo($name)"
|
|
}
|
|
|
|
fun box(): String {
|
|
val james = Foo("James")
|
|
val anotherJames = Foo("James")
|
|
val max = Foo("Max")
|
|
|
|
assertEquals(true, james == anotherJames)
|
|
assertEquals(false, james == max)
|
|
assertEquals("James".myHashCode(), james.hashCode())
|
|
assertEquals("Max".myHashCode(), max.hashCode())
|
|
assertEquals("Foo(James)", james.toString())
|
|
assertEquals("Foo(Max)", max.toString())
|
|
|
|
return "OK"
|
|
} |