//# publish module 0x1.A { struct T has drop {value: u64} public new(v: u64): Self.T { label b0: return T{value: move(v)}; } public add_one(this: &mut Self.T): u64 { let b: &u64; label b0: b = &move(this).T::value; return *move(b) + 1; } public add_two(v: u64): u64 { label b0: return move(v) + 2; } } //# run import 0x1.A; main() { let z: u64; let x: A.T; label b0: x = A.new(5); z = A.add_two(A.add_two(A.add_one(&mut x))); assert(move(z) == 10, 42); return; }