blob: 249df870d1312de939f62d8da82d6ee8026fb381 [file]
// VALHALLA_VALUE_CLASSES
// LANGUAGE: +FullValueClasses
value class Point(val x: Int, val y: Int) : Any()
@JvmInline
value class Id(val value: Int) : Any()
abstract value class Shape : Any() {
abstract val size: Int
}
value class Square(override val size: Int) : Shape()
fun box(): String {
if (!Point::class.java.isValue) return "Point is not a value class"
if (!Id::class.java.isValue || Id(1) != Id(1)) return "Id"
if (!Shape::class.java.isValue) return "Shape is not a value class"
val shape: Shape = Square(3)
if (!shape.javaClass.isValue) return "Square is not a value class"
if (Point(1, 2) != Point(1, 2) || shape.size != 3) return "Fail"
return "OK"
}