[JVM] Forbid non-JvmInline value classes again
This commit is contained in:
committed by
Space
parent
7595f798e1
commit
df1de3a7d3
+30
-24
@@ -3,11 +3,14 @@
|
||||
// WORKS_WHEN_VALUE_CLASS
|
||||
// LANGUAGE: +ValueClasses
|
||||
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class F1(val x: Int)
|
||||
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class F2(val x: UInt)
|
||||
|
||||
value class F3(val x: String)
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class F3(val x: F1, val y: F2)
|
||||
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class F4(val x: Int)
|
||||
@@ -18,9 +21,8 @@ value class F5(val x: UInt)
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class F6(val x: String)
|
||||
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class A(
|
||||
val f1: F1,
|
||||
val f2: F2,
|
||||
val f3: F3,
|
||||
val f4: F4,
|
||||
val f5: F5,
|
||||
@@ -30,6 +32,7 @@ value class A(
|
||||
val f9: String,
|
||||
)
|
||||
|
||||
OPTIONAL_JVM_INLINE_ANNOTATION
|
||||
value class B(val a1: A, val a2: A) {
|
||||
override fun toString(): String {
|
||||
return "OverridenBToString(a1 = $a1, a2 = $a2)"
|
||||
@@ -39,40 +42,43 @@ value class B(val a1: A, val a2: A) {
|
||||
fun box(): String {
|
||||
val f1 = F1(1)
|
||||
val f2 = F2(UInt.MAX_VALUE)
|
||||
val f3 = F3("234")
|
||||
val f3 = F3(f1, f2)
|
||||
val f4 = F4(5)
|
||||
val f5 = F5(UInt.MAX_VALUE.dec())
|
||||
val f6 = F6("678")
|
||||
val a1 = A(f1, f2, f3, f4, f5, f6, 9, UInt.MAX_VALUE - 2U, "0")
|
||||
val a1 = A(f3, f4, f5, f6, 9, UInt.MAX_VALUE - 2U, "0")
|
||||
val a2 = a1
|
||||
val b = B(a1, a2)
|
||||
|
||||
assert(f1.x == 1)
|
||||
assert(f2.x == UInt.MAX_VALUE)
|
||||
assert(f3.x == "234")
|
||||
assert(f3.x == f1)
|
||||
assert(f3.x.x == 1)
|
||||
assert(f3.y == f2)
|
||||
assert(f3.y.x == UInt.MAX_VALUE)
|
||||
assert(f4.x == 5)
|
||||
assert(f5.x == UInt.MAX_VALUE - 1U)
|
||||
assert(f6.x == "678")
|
||||
|
||||
assert(f1 == a1.f1)
|
||||
assert(f1.hashCode() == a1.f1.hashCode())
|
||||
assert(f1.toString() == a1.f1.toString())
|
||||
assert(f1 == a2.f1)
|
||||
assert(f1.hashCode() == a2.f1.hashCode())
|
||||
assert(f1.toString() == a2.f1.toString())
|
||||
assert(a1.f1 == a2.f1)
|
||||
assert(a1.f1.hashCode() == a2.f1.hashCode())
|
||||
assert(a1.f1.toString() == a2.f1.toString())
|
||||
assert(f1 == a1.f3.x)
|
||||
assert(f1.hashCode() == a1.f3.x.hashCode())
|
||||
assert(f1.toString() == a1.f3.x.toString())
|
||||
assert(f1 == a2.f3.x)
|
||||
assert(f1.hashCode() == a2.f3.x.hashCode())
|
||||
assert(f1.toString() == a2.f3.x.toString())
|
||||
assert(a1.f3.x == a2.f3.x)
|
||||
assert(a1.f3.x.hashCode() == a2.f3.x.hashCode())
|
||||
assert(a1.f3.x.toString() == a2.f3.x.toString())
|
||||
|
||||
assert(f2 == a1.f2)
|
||||
assert(f2.hashCode() == a1.f2.hashCode())
|
||||
assert(f2.toString() == a1.f2.toString())
|
||||
assert(f2 == a2.f2)
|
||||
assert(f2.hashCode() == a2.f2.hashCode())
|
||||
assert(f2.toString() == a2.f2.toString())
|
||||
assert(a1.f2 == a2.f2)
|
||||
assert(a1.f2.hashCode() == a2.f2.hashCode())
|
||||
assert(a1.f2.toString() == a2.f2.toString())
|
||||
assert(f2 == a1.f3.y)
|
||||
assert(f2.hashCode() == a1.f3.y.hashCode())
|
||||
assert(f2.toString() == a1.f3.y.toString())
|
||||
assert(f2 == a2.f3.y)
|
||||
assert(f2.hashCode() == a2.f3.y.hashCode())
|
||||
assert(f2.toString() == a2.f3.y.toString())
|
||||
assert(a1.f3.y == a2.f3.y)
|
||||
assert(a1.f3.y.hashCode() == a2.f3.y.hashCode())
|
||||
assert(a1.f3.y.toString() == a2.f3.y.toString())
|
||||
|
||||
assert(f3 == a1.f3)
|
||||
assert(f3.hashCode() == a1.f3.hashCode())
|
||||
|
||||
Reference in New Issue
Block a user