1 # Tests for ensuring immutable value nature in various contexts
2 struct Inner(xs:[Int32])
4 struct Outer(inner:Inner)
6 enum HoldsList(HasList(xs:[Int32]))
8 func sneaky(outer:Outer)
9 (&outer.inner.xs)[1] = 99
11 func sneaky2(outer:&Outer)
12 (&outer.inner.xs)[1] = 99
19 assert xs == [99, 20, 30]
20 assert copy == [10, 20, 30]
26 assert t == {"A":99, "B":20}
27 assert copy == {"A":10, "B":20}
30 foo := Outer(Inner([10, 20, 30]))
32 (&foo.inner.xs)[1] = 99
33 assert foo.inner.xs == [99, 20, 30]
34 assert copy.inner.xs == [10, 20, 30]
37 foo := Outer(Inner([10, 20, 30]))
40 assert foo.inner.xs == [10, 20, 30]
41 assert copy.inner.xs == [10, 20, 30]
44 foo := Outer(Inner([10, 20, 30]))
47 assert foo.inner.xs == [99, 20, 30]
48 assert copy.inner.xs == [10, 20, 30]
51 x := HoldsList.HasList([10, 20, 30])
52 when x is HasList(list)
55 assert x == HoldsList.HasList([10, 20, 30])