1 private@ 2 3 do 4 let mut count = 0 5 let f () = 6 let x @param = 7 count += 1 8 1 9 10 f 11 assert count == 1 12 13 f x = 2 14 assert count == 1 15 16 type ValA @abstract @byval = 17 let mut count = 0 18 let x : i32 @param = 19 count += 1 20 1 21 22 type ValB @byval = 23 inherit ValA 24 25 do 26 let b1 = ValB.new 27 assert b1.count == 1 28 29 let b2 = ValB x = 1 30 assert b2.count == 0 31 32 type ValC @byval = 33 inherit ValA x = 1 34 35 do 36 let c = ValC.new 37 assert c.count == 0 38 39 type RefA @abstract = 40 let mut count = 0 41 let x : i32 @param = 42 count += 1 43 1 44 45 type RefB = 46 inherit RefA 47 48 do 49 let b = RefB.new 50 assert b.count == 1 51 52 type RefC = 53 inherit RefA x = 1 54 55 do 56 let c = RefC.new 57 assert c.count == 0 58 59 do 60 let f (x : i32) = 61 if x > 5 then 62 let y @param = x * 2 63 y 64 else 65 x 66 67 assert f 8 == 16 68 assert f 8 69 y = 7 70 |> { _ == 7 } 71 72 type D = 73 let x : i32 74 let r = if x > 5 then 75 let y @param = x * 2 76 y 77 else 78 x 79 80 do 81 let d1 = D 8 82 assert d1.r == 16 83 84 let d2 = D 8 85 y = 7 86 87 assert d2.r == 7 88