blob: d068479eda32bb3c159e69102f0e7dc70cc27022 [file] [log] [blame]
// WITH_STDLIB
// LANGUAGE: +ValueClasses, +CustomEqualsInValueClasses
// TARGET_BACKEND: JVM_IR
// CHECK_BYTECODE_LISTING
interface I {
fun getVal(): Int
}
@JvmInline
value class IC1(val x: Int) : I {
override fun getVal(): Int {
return x
}
fun equals(other: IC1): Boolean {
return x == other.x
}
override fun equals(other: Any?): Boolean {
if (other !is I) {
return false
}
return getVal() == other.getVal()
}
override fun hashCode(): Int {
return getVal()
}
}
@JvmInline
value class IC2(val y: Int) : I {
override fun getVal(): Int {
return y * 10
}
fun equals(other: IC2): Boolean {
return y == other.y
}
override fun equals(other: Any?): Boolean {
if (other !is I) {
return false
}
return getVal() == other.getVal()
}
override fun hashCode(): Int {
return getVal()
}
}
fun box(): String = if (setOf(IC1(10), IC2(1)).size == 1) "OK" else "Fail"