1 private@ 2 3 type A @mem = 4 let mut x : i32 5 def f = x * 2 6 7 do 8 let a1 = A 1 9 assert a1.f == 2 10 11 do 12 let a1 = A 1 13 let a2 = a1 14 15 a1.x = 9 16 17 assert a2.x == 9 18 19 type B @mem = 20 let a = A 5 21 22 do 23 let b1 = B.new 24 assert b1.a.f == 10 25 26 do 27 let b1 = B.new 28 let a2 = b1.a 29 30 b1.a.x = 9 31 32 assert a2.x == 9 33 34 do 35 let a1 = A@ref 9 36 assert a1.x == 9 37 assert a1.f == 18 38 39 type Inner @mem = 40 let x : i32 41 42 type Outer = 43 let inner = Inner 5 44 45 do 46 let outer = Outer.new 47 assert outer.inner.x == 5 48 49 type OuterMove @mem = 50 let inner = Inner 9 51 52 do 53 let outer = OuterMove.new 54 assert outer.inner.x == 9 55