fa4a4e56f3
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com> #KT-1179
51 lines
1.1 KiB
Kotlin
Vendored
51 lines
1.1 KiB
Kotlin
Vendored
// WITH_STDLIB
|
|
// LANGUAGE: +ValueClasses, +CustomEqualsInValueClasses
|
|
// TARGET_BACKEND: JVM_IR
|
|
// CHECK_BYTECODE_LISTING
|
|
|
|
var counter = 0
|
|
|
|
@JvmInline
|
|
value class MFVC(val x: Int, val y: Int) {
|
|
|
|
fun equals(other: MFVC): Boolean {
|
|
counter++
|
|
return x == other.x && this.y == other.y
|
|
}
|
|
|
|
override fun equals(other: Any?): Boolean {
|
|
counter++
|
|
if (other !is MFVC) {
|
|
return false
|
|
}
|
|
return equals(other)
|
|
}
|
|
|
|
override fun hashCode(): Int {
|
|
counter++
|
|
return x + 13 * y
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
val mfvc1 = MFVC(1, 2)
|
|
val mfvc2 = MFVC(3, 4)
|
|
|
|
require(mfvc1.equals(mfvc1))
|
|
require(!mfvc1.equals(mfvc2))
|
|
require(!mfvc2.equals(mfvc1))
|
|
require(mfvc2.equals(mfvc2))
|
|
|
|
require(mfvc1.equals(mfvc1 as Any?))
|
|
require(!mfvc1.equals(mfvc2 as Any?))
|
|
require(!mfvc2.equals(mfvc1 as Any?))
|
|
require(mfvc2.equals(mfvc2 as Any?))
|
|
|
|
require(mfvc1.hashCode() == 27)
|
|
require(mfvc2.hashCode() == 55)
|
|
|
|
require(counter == 4 + 2 * 4 + 2)
|
|
|
|
return "OK"
|
|
}
|