blob: 93eb3c164aa577aafb5b3b67f7df9cf82c7261c0 [file]
// LANGUAGE: +FullValueClasses
// WITH_STDLIB
value class A(val a: B?, val i: Int)
value class B(val b: A)
value class Nat(val previous: Nat?)
fun Nat?.toInt(): Int = if (this == null) 0 else 1 + previous.toInt()
inline value class InlineToSingle(val s: SingleFromInline)
value class SingleFromInline(val i: InlineToSingle?)
fun box(): String {
val a = A(B(A(null, 1)), 2)
if (a.a?.b?.i != 1 || a.i != 2) return "Fail: $a"
if (a != A(B(A(null, 1)), 2)) return "Fail: equals"
val three = Nat(Nat(Nat(null)))
if (three.toInt() != 3) return "Fail: Nat"
if (three != Nat(Nat(Nat(null)))) return "Fail: Nat equals"
val s = SingleFromInline(InlineToSingle(SingleFromInline(null)))
if (s.i?.s?.i != null) return "Fail: $s"
if (s != SingleFromInline(InlineToSingle(SingleFromInline(null)))) return "Fail: SingleFromInline equals"
return "OK"
}