Files
kotlin-fork/compiler/testData/codegen/box/inlineClasses/inlineClassBothEqualsOverride.kt
T
Evgeniy.Zhelenskiy 4d426fc4cd [IR] Generate not FIR_IDENTICAL box fir value classes tests
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-1179
2022-11-30 18:55:39 +00:00

57 lines
1.1 KiB
Kotlin
Vendored

// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses, +CustomEqualsInValueClasses
// TARGET_BACKEND: JVM_IR
// CHECK_BYTECODE_LISTING
interface I {
fun getVal(): Int
}
OPTIONAL_JVM_INLINE_ANNOTATION
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()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
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"