module M { struct T{f: u64} public new(g: u64): V#Self.T { return T{g: move(g)}; } public t(this: &V#Self.T) { let y: u64; y = *&move(this).f; assert(copy(y) == 2, 42); return; } } //! new-transaction import {{default}}.M; main(){ let x: V#M.T; let x_ref: &V#M.T; x = M.new(2); x_ref = &x; M.t(move(x_ref)); return; }