diff --git a/src/libcore/ops.rs b/src/libcore/ops.rs index 87c165266f8..5c56ed7608f 100644 --- a/src/libcore/ops.rs +++ b/src/libcore/ops.rs @@ -25,7 +25,7 @@ pub trait Owned { #[lang="drop"] pub trait Drop { - fn finalize(); // XXX: Rename to "drop"? --pcwalton + fn finalize(&self); // XXX: Rename to "drop"? --pcwalton } #[lang="add"] diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs index 721e4fddb4c..36696594e42 100644 --- a/src/librustc/middle/trans/expr.rs +++ b/src/librustc/middle/trans/expr.rs @@ -888,7 +888,7 @@ fn with_field_tys(tcx: ty::ctxt, } ty::ty_class(did, ref substs) => { - let has_dtor = ty::ty_dtor(tcx, did).is_some(); + let has_dtor = ty::ty_dtor(tcx, did).is_present(); op(has_dtor, class_items_as_mutable_fields(tcx, did, substs)) } diff --git a/src/librustc/middle/trans/glue.rs b/src/librustc/middle/trans/glue.rs index 76d5770ac3d..0a44028c7df 100644 --- a/src/librustc/middle/trans/glue.rs +++ b/src/librustc/middle/trans/glue.rs @@ -397,8 +397,14 @@ fn make_free_glue(bcx: block, v: ValueRef, t: ty::t) { } ty::ty_class(did, ref substs) => { // Call the dtor if there is one - do option::map_default(&ty::ty_dtor(bcx.tcx(), did), bcx) |dt_id| { - trans_class_drop(bcx, v, *dt_id, did, substs) + match ty::ty_dtor(bcx.tcx(), did) { + ty::NoDtor => bcx, + ty::LegacyDtor(ref dt_id) => { + trans_class_drop(bcx, v, *dt_id, did, substs, false) + } + ty::TraitDtor(ref dt_id) => { + trans_class_drop(bcx, v, *dt_id, did, substs, true) + } } } _ => bcx @@ -410,7 +416,8 @@ fn trans_class_drop(bcx: block, v0: ValueRef, dtor_did: ast::def_id, class_did: ast::def_id, - substs: &ty::substs) -> block { + substs: &ty::substs, + take_ref: bool) -> block { let drop_flag = GEPi(bcx, v0, struct_dtor()); do with_cond(bcx, IsNotNull(bcx, Load(bcx, drop_flag))) |cx| { let mut bcx = cx; @@ -427,7 +434,18 @@ fn trans_class_drop(bcx: block, // just consist of the output pointer and the environment // (self) assert(params.len() == 2); - let self_arg = PointerCast(bcx, v0, params[1]); + + // If we need to take a reference to the class (because it's using + // the Drop trait), do so now. + let llval; + if take_ref { + llval = alloca(bcx, val_ty(v0)); + Store(bcx, v0, llval); + } else { + llval = v0; + } + + let self_arg = PointerCast(bcx, llval, params[1]); let args = ~[bcx.fcx.llretptr, self_arg]; Call(bcx, dtor_addr, args); @@ -465,10 +483,13 @@ fn make_drop_glue(bcx: block, v0: ValueRef, t: ty::t) { ty::ty_class(did, ref substs) => { let tcx = bcx.tcx(); match ty::ty_dtor(tcx, did) { - Some(dtor) => { - trans_class_drop(bcx, v0, dtor, did, substs) + ty::TraitDtor(dtor) => { + trans_class_drop(bcx, v0, dtor, did, substs, true) } - None => { + ty::LegacyDtor(dtor) => { + trans_class_drop(bcx, v0, dtor, did, substs, false) + } + ty::NoDtor => { // No dtor? Just the default case iter_structural_ty(bcx, v0, t, drop_ty) } diff --git a/src/librustc/middle/trans/machine.rs b/src/librustc/middle/trans/machine.rs index 5515d80f4bd..6f6a5c52ecd 100644 --- a/src/librustc/middle/trans/machine.rs +++ b/src/librustc/middle/trans/machine.rs @@ -27,7 +27,7 @@ pub fn simplify_type(tcx: ty::ctxt, typ: ty::t) -> ty::t { // Reduce a class type to a record type in which all the fields are // simplified ty::ty_class(did, ref substs) => { - let simpl_fields = (if ty::ty_dtor(tcx, did).is_some() { + let simpl_fields = (if ty::ty_dtor(tcx, did).is_present() { // remember the drop flag ~[{ident: syntax::parse::token::special_idents::dtor, mt: {ty: ty::mk_u8(tcx), diff --git a/src/librustc/middle/trans/type_of.rs b/src/librustc/middle/trans/type_of.rs index 604bad2312f..9251b315684 100644 --- a/src/librustc/middle/trans/type_of.rs +++ b/src/librustc/middle/trans/type_of.rs @@ -199,7 +199,7 @@ fn type_of(cx: @crate_ctxt, t: ty::t) -> TypeRef { // include a byte flag if there is a dtor so that we know when we've // been dropped - if ty::ty_dtor(cx.tcx, did) != None { + if ty::ty_dtor(cx.tcx, did).is_present() { common::set_struct_body(llty, ~[T_struct(tys), T_i8()]); } else { common::set_struct_body(llty, ~[T_struct(tys)]); diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 520875f3b15..b37fbd9feb4 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -75,6 +75,7 @@ export enum_variants, substd_enum_variants, enum_is_univariant; export trait_methods, store_trait_methods, impl_traits; export enum_variant_with_id; export ty_dtor; +export DtorKind, NoDtor, LegacyDtor, TraitDtor; export ty_param_bounds_and_ty; export ty_param_substs_and_ty; export ty_bool, mk_bool, type_is_bool; @@ -1868,7 +1869,7 @@ fn type_needs_drop(cx: ctxt, ty: t) -> bool { } ty_class(did, ref substs) => { // Any class with a dtor needs a drop - ty_dtor(cx, did).is_some() || { + ty_dtor(cx, did).is_present() || { for vec::each(ty::class_items_as_fields(cx, did, substs)) |f| { if type_needs_drop(cx, f.mt.ty) { accum = true; } } @@ -3954,11 +3955,29 @@ fn item_path_str(cx: ctxt, id: ast::def_id) -> ~str { ast_map::path_to_str(item_path(cx, id), cx.sess.parse_sess.interner) } +enum DtorKind { + NoDtor, + LegacyDtor(def_id), + TraitDtor(def_id) +} + +impl DtorKind { + pure fn is_not_present(&const self) -> bool { + match *self { + NoDtor => true, + _ => false + } + } + pure fn is_present(&const self) -> bool { + !self.is_not_present() + } +} + /* If class_id names a class with a dtor, return Some(the dtor's id). Otherwise return none. */ -fn ty_dtor(cx: ctxt, class_id: def_id) -> Option { +fn ty_dtor(cx: ctxt, class_id: def_id) -> DtorKind { match cx.destructor_for_type.find(class_id) { - Some(method_def_id) => return Some(method_def_id), + Some(method_def_id) => return TraitDtor(method_def_id), None => {} // Continue. } @@ -3968,18 +3987,21 @@ fn ty_dtor(cx: ctxt, class_id: def_id) -> Option { node: ast::item_class(@{ dtor: Some(dtor), _ }, _), _ }, _)) => - Some(local_def(dtor.node.id)), + LegacyDtor(local_def(dtor.node.id)), _ => - None + NoDtor } } else { - csearch::class_dtor(cx.sess.cstore, class_id) + match csearch::class_dtor(cx.sess.cstore, class_id) { + None => NoDtor, + Some(did) => LegacyDtor(did), + } } } fn has_dtor(cx: ctxt, class_id: def_id) -> bool { - ty_dtor(cx, class_id).is_some() + ty_dtor(cx, class_id).is_present() } fn item_path(cx: ctxt, id: ast::def_id) -> ast_map::path { diff --git a/src/libstd/arc.rs b/src/libstd/arc.rs index 628d72f99c1..3ced56e6f50 100644 --- a/src/libstd/arc.rs +++ b/src/libstd/arc.rs @@ -229,7 +229,7 @@ struct PoisonOnFail { } impl PoisonOnFail : Drop { - fn finalize() { + fn finalize(&self) { /* assert !*self.failed; -- might be false in case of cond.wait() */ if task::failing() { *self.failed = true; } } diff --git a/src/libstd/arena.rs b/src/libstd/arena.rs index cf8bbc628f0..ea247d4bd3f 100644 --- a/src/libstd/arena.rs +++ b/src/libstd/arena.rs @@ -58,7 +58,7 @@ pub struct Arena { } impl Arena : Drop { - fn finalize() { + fn finalize(&self) { unsafe { destroy_chunk(&self.head); for list::each(self.chunks) |chunk| { diff --git a/src/libstd/c_vec.rs b/src/libstd/c_vec.rs index 2e94f07d2d8..8777592eacc 100644 --- a/src/libstd/c_vec.rs +++ b/src/libstd/c_vec.rs @@ -42,11 +42,11 @@ struct DtorRes { } impl DtorRes : Drop { - fn finalize() { - match self.dtor { - option::None => (), - option::Some(f) => f() - } + fn finalize(&self) { + match self.dtor { + option::None => (), + option::Some(f) => f() + } } } diff --git a/src/libstd/future.rs b/src/libstd/future.rs index 31144740c8a..a22e4d67468 100644 --- a/src/libstd/future.rs +++ b/src/libstd/future.rs @@ -28,7 +28,7 @@ pub struct Future { // FIXME(#2829) -- futures should not be copyable, because they close // over fn~'s that have pipes and so forth within! impl Future : Drop { - fn finalize() {} + fn finalize(&self) {} } priv enum FutureState { diff --git a/src/libstd/net_tcp.rs b/src/libstd/net_tcp.rs index 182ec2a233c..2dd0c2b286d 100644 --- a/src/libstd/net_tcp.rs +++ b/src/libstd/net_tcp.rs @@ -30,10 +30,10 @@ struct TcpSocket { } impl TcpSocket : Drop { - fn finalize() { - unsafe { - tear_down_socket_data(self.socket_data) - } + fn finalize(&self) { + unsafe { + tear_down_socket_data(self.socket_data) + } } } diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs index c6e8c72e6d6..c9981c2fef5 100644 --- a/src/libstd/sort.rs +++ b/src/libstd/sort.rs @@ -1137,7 +1137,7 @@ mod big_tests { } impl LVal : Drop { - fn finalize() { + fn finalize(&self) { let x = unsafe { task::local_data::local_data_get(self.key) }; match x { Some(@y) => { diff --git a/src/libstd/sync.rs b/src/libstd/sync.rs index c288e4dc4d3..61201d44d2f 100644 --- a/src/libstd/sync.rs +++ b/src/libstd/sync.rs @@ -153,7 +153,7 @@ struct SemRelease { } impl SemRelease : Drop { - fn finalize() { + fn finalize(&self) { self.sem.release(); } } @@ -170,7 +170,7 @@ struct SemAndSignalRelease { } impl SemAndSignalRelease : Drop { - fn finalize() { + fn finalize(&self) { self.sem.release(); } } @@ -185,7 +185,7 @@ fn SemAndSignalRelease(sem: &r/Sem<~[mut Waitqueue]>) /// A mechanism for atomic-unlock-and-deschedule blocking and signalling. pub struct Condvar { priv sem: &Sem<~[mut Waitqueue]> } -impl Condvar : Drop { fn finalize() {} } +impl Condvar : Drop { fn finalize(&self) {} } impl &Condvar { /** @@ -257,7 +257,7 @@ impl &Condvar { } impl SemAndSignalReacquire : Drop { - fn finalize() { + fn finalize(&self) { unsafe { // Needs to succeed, instead of itself dying. do task::unkillable { @@ -607,7 +607,7 @@ struct RWlockReleaseRead { } impl RWlockReleaseRead : Drop { - fn finalize() { + fn finalize(&self) { unsafe { do task::unkillable { let mut last_reader = false; @@ -641,7 +641,7 @@ struct RWlockReleaseDowngrade { } impl RWlockReleaseDowngrade : Drop { - fn finalize() { + fn finalize(&self) { unsafe { do task::unkillable { let mut writer_or_last_reader = false; @@ -678,10 +678,10 @@ fn RWlockReleaseDowngrade(lock: &r/RWlock) -> RWlockReleaseDowngrade/&r { /// The "write permission" token used for rwlock.write_downgrade(). pub struct RWlockWriteMode { /* priv */ lock: &RWlock } -impl RWlockWriteMode : Drop { fn finalize() {} } +impl RWlockWriteMode : Drop { fn finalize(&self) {} } /// The "read permission" token used for rwlock.write_downgrade(). pub struct RWlockReadMode { priv lock: &RWlock } -impl RWlockReadMode : Drop { fn finalize() {} } +impl RWlockReadMode : Drop { fn finalize(&self) {} } impl &RWlockWriteMode { /// Access the pre-downgrade rwlock in write mode. @@ -993,7 +993,7 @@ mod tests { } impl SendOnFailure : Drop { - fn finalize() { + fn finalize(&self) { self.c.send(()); } } diff --git a/src/test/auxiliary/issue-2526.rs b/src/test/auxiliary/issue-2526.rs index d17de197e24..b3e5c645edb 100644 --- a/src/test/auxiliary/issue-2526.rs +++ b/src/test/auxiliary/issue-2526.rs @@ -12,7 +12,7 @@ struct arc_destruct { } impl arc_destruct : Drop { - fn finalize() {} + fn finalize(&self) {} } fn arc_destruct(data: int) -> arc_destruct { @@ -34,7 +34,7 @@ struct context_res { } impl context_res : Drop { - fn finalize() {} + fn finalize(&self) {} } fn context_res() -> context_res { diff --git a/src/test/auxiliary/issue-3012-1.rs b/src/test/auxiliary/issue-3012-1.rs index ba123cf5254..15c7cf53e2f 100644 --- a/src/test/auxiliary/issue-3012-1.rs +++ b/src/test/auxiliary/issue-3012-1.rs @@ -12,7 +12,7 @@ struct socket_handle { } impl socket_handle : Drop { - fn finalize() { + fn finalize(&self) { /* c::close(self.sockfd); */ } } diff --git a/src/test/auxiliary/issue2170lib.rs b/src/test/auxiliary/issue2170lib.rs index 3ce738fd5e0..9a78fd34613 100644 --- a/src/test/auxiliary/issue2170lib.rs +++ b/src/test/auxiliary/issue2170lib.rs @@ -8,7 +8,7 @@ struct rsrc { } impl rsrc : Drop { - fn finalize() { + fn finalize(&self) { foo(self.x); } } diff --git a/src/test/auxiliary/test_comm.rs b/src/test/auxiliary/test_comm.rs index 9664dc24c33..36e336d2ad3 100644 --- a/src/test/auxiliary/test_comm.rs +++ b/src/test/auxiliary/test_comm.rs @@ -32,7 +32,7 @@ struct port_ptr { } impl port_ptr : Drop { - fn finalize() { + fn finalize(&self) { unsafe { debug!("in the port_ptr destructor"); do task::unkillable { diff --git a/src/test/bench/task-perf-alloc-unwind.rs b/src/test/bench/task-perf-alloc-unwind.rs index 65fb9ec1739..f2652b10cdc 100644 --- a/src/test/bench/task-perf-alloc-unwind.rs +++ b/src/test/bench/task-perf-alloc-unwind.rs @@ -45,7 +45,7 @@ struct r { } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn r(l: @nillist) -> r { diff --git a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-1.rs b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-1.rs index 1f7989d1ae9..5753a862582 100644 --- a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-1.rs +++ b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-1.rs @@ -1,7 +1,7 @@ struct X { x: () } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-2.rs b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-2.rs index 598fc4b0a08..2cf08c0139f 100644 --- a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-2.rs +++ b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-2.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-3.rs b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-3.rs index 1cd62e92889..3dd000a1da8 100644 --- a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-3.rs +++ b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-3.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-4.rs b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-4.rs index 3cd6c45af0b..e7f146e5bd3 100644 --- a/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-4.rs +++ b/src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-4.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-no-lvalues-1.rs b/src/test/compile-fail/bind-by-move-no-lvalues-1.rs index 29d21ee670d..cd5bf5e17f3 100644 --- a/src/test/compile-fail/bind-by-move-no-lvalues-1.rs +++ b/src/test/compile-fail/bind-by-move-no-lvalues-1.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-no-lvalues-2.rs b/src/test/compile-fail/bind-by-move-no-lvalues-2.rs index b1b38b587e8..be016034ff3 100644 --- a/src/test/compile-fail/bind-by-move-no-lvalues-2.rs +++ b/src/test/compile-fail/bind-by-move-no-lvalues-2.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/bind-by-move-no-sub-bindings.rs b/src/test/compile-fail/bind-by-move-no-sub-bindings.rs index 2a36d9e0db6..3c1ffbd86d7 100644 --- a/src/test/compile-fail/bind-by-move-no-sub-bindings.rs +++ b/src/test/compile-fail/bind-by-move-no-sub-bindings.rs @@ -1,7 +1,7 @@ struct X { x: (), } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("destructor runs"); } } diff --git a/src/test/compile-fail/block-must-not-have-result-res.rs b/src/test/compile-fail/block-must-not-have-result-res.rs index a2823521234..464d6b1bc03 100644 --- a/src/test/compile-fail/block-must-not-have-result-res.rs +++ b/src/test/compile-fail/block-must-not-have-result-res.rs @@ -3,7 +3,7 @@ struct r {} impl r : Drop { - fn finalize() { + fn finalize(&self) { true } } diff --git a/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs b/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs index 4920a0239a5..cd24a8bb323 100644 --- a/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs +++ b/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs @@ -3,7 +3,7 @@ struct defer { } impl defer : Drop { - fn finalize() { + fn finalize(&self) { error!("%?", self.x); } } diff --git a/src/test/compile-fail/borrowck-unary-move-2.rs b/src/test/compile-fail/borrowck-unary-move-2.rs index b8fcf695c3f..eedeac84f83 100644 --- a/src/test/compile-fail/borrowck-unary-move-2.rs +++ b/src/test/compile-fail/borrowck-unary-move-2.rs @@ -3,7 +3,7 @@ struct noncopyable { } impl noncopyable : Drop { - fn finalize() { + fn finalize(&self) { error!("dropped"); } } diff --git a/src/test/compile-fail/cap-clause-illegal-cap.rs b/src/test/compile-fail/cap-clause-illegal-cap.rs index be630ec8518..c174a4b50bc 100644 --- a/src/test/compile-fail/cap-clause-illegal-cap.rs +++ b/src/test/compile-fail/cap-clause-illegal-cap.rs @@ -3,7 +3,7 @@ struct foo { x: int, } impl foo : Drop { - fn finalize() {} + fn finalize(&self) {} } fn foo(x: int) -> foo { diff --git a/src/test/compile-fail/copy-a-resource.rs b/src/test/compile-fail/copy-a-resource.rs index 9f86b9e894a..311eecae7db 100644 --- a/src/test/compile-fail/copy-a-resource.rs +++ b/src/test/compile-fail/copy-a-resource.rs @@ -5,7 +5,7 @@ struct foo { } impl foo : Drop { - fn finalize() {} + fn finalize(&self) {} } fn foo(i:int) -> foo { diff --git a/src/test/compile-fail/disallowed-deconstructing-destructing-struct.rs b/src/test/compile-fail/disallowed-deconstructing-destructing-struct.rs index 407b786016d..053a4075d2f 100644 --- a/src/test/compile-fail/disallowed-deconstructing-destructing-struct.rs +++ b/src/test/compile-fail/disallowed-deconstructing-destructing-struct.rs @@ -3,7 +3,7 @@ struct X { } impl X : Drop { - fn finalize() { + fn finalize(&self) { error!("value: %s", self.x); } } diff --git a/src/test/compile-fail/drop-on-non-struct.rs b/src/test/compile-fail/drop-on-non-struct.rs index 8ee72d9d2fd..f3db004da13 100644 --- a/src/test/compile-fail/drop-on-non-struct.rs +++ b/src/test/compile-fail/drop-on-non-struct.rs @@ -1,7 +1,7 @@ type Foo = @[u8]; impl Foo : Drop { //~ ERROR the Drop trait may only be implemented - fn finalize() { + fn finalize(&self) { io::println("kaboom"); } } diff --git a/src/test/compile-fail/explicit-call-to-dtor.rs b/src/test/compile-fail/explicit-call-to-dtor.rs index 56af671852b..0f78d8e1ae3 100644 --- a/src/test/compile-fail/explicit-call-to-dtor.rs +++ b/src/test/compile-fail/explicit-call-to-dtor.rs @@ -3,7 +3,7 @@ struct Foo { } impl Foo : Drop { - fn finalize() { + fn finalize(&self) { io::println("kaboom"); } } diff --git a/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs b/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs index c7c2748235a..83464270eb5 100644 --- a/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs +++ b/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs @@ -7,7 +7,7 @@ trait Bar : Drop { } impl Foo : Drop { - fn finalize() { + fn finalize(&self) { io::println("kaboom"); } } diff --git a/src/test/compile-fail/functional-struct-update.rs b/src/test/compile-fail/functional-struct-update.rs index 13012f146bf..a1a156d9ff5 100644 --- a/src/test/compile-fail/functional-struct-update.rs +++ b/src/test/compile-fail/functional-struct-update.rs @@ -3,7 +3,7 @@ struct Bar { } impl Bar : Drop { - fn finalize() { + fn finalize(&self) { io::println("Goodbye, cruel world"); } } diff --git a/src/test/compile-fail/issue-2487-b.rs b/src/test/compile-fail/issue-2487-b.rs index 5476ab24000..a6248c158b7 100644 --- a/src/test/compile-fail/issue-2487-b.rs +++ b/src/test/compile-fail/issue-2487-b.rs @@ -3,7 +3,7 @@ struct socket { } impl socket : Drop { - fn finalize() {} + fn finalize(&self) {} } impl socket { diff --git a/src/test/compile-fail/issue-2548.rs b/src/test/compile-fail/issue-2548.rs index 5567e5855e4..d47d51b2a2b 100644 --- a/src/test/compile-fail/issue-2548.rs +++ b/src/test/compile-fail/issue-2548.rs @@ -7,7 +7,7 @@ struct foo { } impl foo : Drop { - fn finalize() { + fn finalize(&self) { io::println("Goodbye, World!"); *self.x += 1; } diff --git a/src/test/compile-fail/issue-2587-2.rs b/src/test/compile-fail/issue-2587-2.rs index 8b1bcb69e01..d8d2f82da97 100644 --- a/src/test/compile-fail/issue-2587-2.rs +++ b/src/test/compile-fail/issue-2587-2.rs @@ -9,7 +9,7 @@ struct S { } impl S : Drop { - fn finalize() {} + fn finalize(&self) {} } fn S(x: int) -> S { S { x: x } } diff --git a/src/test/compile-fail/issue-2823.rs b/src/test/compile-fail/issue-2823.rs index 5b02a6da458..e613114fee5 100644 --- a/src/test/compile-fail/issue-2823.rs +++ b/src/test/compile-fail/issue-2823.rs @@ -3,7 +3,7 @@ struct C { } impl C : Drop { - fn finalize() { + fn finalize(&self) { error!("dropping: %?", self.x); } } diff --git a/src/test/compile-fail/issue-3214.rs b/src/test/compile-fail/issue-3214.rs index 9e38c39bb72..ad97377324c 100644 --- a/src/test/compile-fail/issue-3214.rs +++ b/src/test/compile-fail/issue-3214.rs @@ -5,7 +5,7 @@ fn foo() { } impl foo : Drop { - fn finalize() {} + fn finalize(&self) {} } } fn main() { } diff --git a/src/test/compile-fail/liveness-unused.rs b/src/test/compile-fail/liveness-unused.rs index 3aaaa2ef16f..3c4d70e058b 100644 --- a/src/test/compile-fail/liveness-unused.rs +++ b/src/test/compile-fail/liveness-unused.rs @@ -53,7 +53,7 @@ struct r { } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn main() { diff --git a/src/test/compile-fail/no-send-res-ports.rs b/src/test/compile-fail/no-send-res-ports.rs index 7f5c7e1f59b..87f149d3928 100644 --- a/src/test/compile-fail/no-send-res-ports.rs +++ b/src/test/compile-fail/no-send-res-ports.rs @@ -4,7 +4,7 @@ fn main() { } impl foo : Drop { - fn finalize() {} + fn finalize(&self) {} } fn foo(x: comm::Port<()>) -> foo { diff --git a/src/test/compile-fail/non-const.rs b/src/test/compile-fail/non-const.rs index 084b357561a..0808997676b 100644 --- a/src/test/compile-fail/non-const.rs +++ b/src/test/compile-fail/non-const.rs @@ -7,7 +7,7 @@ struct r { } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn r(x:int) -> r { @@ -21,7 +21,7 @@ struct r2 { } impl r2 : Drop { - fn finalize() {} + fn finalize(&self) {} } fn r2(x:@mut int) -> r2 { diff --git a/src/test/compile-fail/noncopyable-class.rs b/src/test/compile-fail/noncopyable-class.rs index 0d56867225d..ee786370dfb 100644 --- a/src/test/compile-fail/noncopyable-class.rs +++ b/src/test/compile-fail/noncopyable-class.rs @@ -7,7 +7,7 @@ struct bar { } impl bar : Drop { - fn finalize() {} + fn finalize(&self) {} } fn bar(x:int) -> bar { diff --git a/src/test/compile-fail/pinned-deep-copy.rs b/src/test/compile-fail/pinned-deep-copy.rs index c95e2f0b54d..dbb57d7ee86 100644 --- a/src/test/compile-fail/pinned-deep-copy.rs +++ b/src/test/compile-fail/pinned-deep-copy.rs @@ -5,7 +5,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) = *(self.i) + 1; } } diff --git a/src/test/compile-fail/record-with-resource.rs b/src/test/compile-fail/record-with-resource.rs index 6bcac8f56e0..01a6c729e7f 100644 --- a/src/test/compile-fail/record-with-resource.rs +++ b/src/test/compile-fail/record-with-resource.rs @@ -5,7 +5,7 @@ struct my_resource { } impl my_resource : Drop { - fn finalize() { + fn finalize(&self) { log(error, self.x); } } diff --git a/src/test/compile-fail/regions-in-rsrcs.rs b/src/test/compile-fail/regions-in-rsrcs.rs index cce998bea2d..bcd7e5b03ab 100644 --- a/src/test/compile-fail/regions-in-rsrcs.rs +++ b/src/test/compile-fail/regions-in-rsrcs.rs @@ -3,7 +3,7 @@ struct yes0 { } impl yes0 : Drop { - fn finalize() {} + fn finalize(&self) {} } struct yes1 { @@ -11,7 +11,7 @@ struct yes1 { } impl yes1 : Drop { - fn finalize() {} + fn finalize(&self) {} } struct yes2 { @@ -19,7 +19,7 @@ struct yes2 { } impl yes2 : Drop { - fn finalize() {} + fn finalize(&self) {} } fn main() {} diff --git a/src/test/compile-fail/repeat-to-run-dtor-twice.rs b/src/test/compile-fail/repeat-to-run-dtor-twice.rs index fb5b2509cb8..2037358c36d 100644 --- a/src/test/compile-fail/repeat-to-run-dtor-twice.rs +++ b/src/test/compile-fail/repeat-to-run-dtor-twice.rs @@ -7,7 +7,7 @@ struct Foo { } impl Foo : Drop { - fn finalize() { + fn finalize(&self) { io::println("Goodbye!"); } } diff --git a/src/test/compile-fail/unique-object-noncopyable.rs b/src/test/compile-fail/unique-object-noncopyable.rs index 32739a1075a..f42bfea9562 100644 --- a/src/test/compile-fail/unique-object-noncopyable.rs +++ b/src/test/compile-fail/unique-object-noncopyable.rs @@ -7,7 +7,7 @@ struct Bar { } impl Bar : Drop { - fn finalize() {} + fn finalize(&self) {} } impl Bar : Foo { diff --git a/src/test/compile-fail/unique-pinned-nocopy.rs b/src/test/compile-fail/unique-pinned-nocopy.rs index 6a665c29240..d9eeced26fe 100644 --- a/src/test/compile-fail/unique-pinned-nocopy.rs +++ b/src/test/compile-fail/unique-pinned-nocopy.rs @@ -5,7 +5,7 @@ struct r { } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn main() { diff --git a/src/test/compile-fail/unique-vec-res.rs b/src/test/compile-fail/unique-vec-res.rs index 157b4435d07..0c3ab53dcc7 100644 --- a/src/test/compile-fail/unique-vec-res.rs +++ b/src/test/compile-fail/unique-vec-res.rs @@ -5,7 +5,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) = *(self.i) + 1; } } diff --git a/src/test/compile-fail/vec-res-add.rs b/src/test/compile-fail/vec-res-add.rs index 452c7e490cc..c0e6f2b60c1 100644 --- a/src/test/compile-fail/vec-res-add.rs +++ b/src/test/compile-fail/vec-res-add.rs @@ -7,7 +7,7 @@ struct r { fn r(i:int) -> r { r { i: i } } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn main() { diff --git a/src/test/run-fail/issue-2061.rs b/src/test/run-fail/issue-2061.rs index bed54138acb..9ffc10b86ae 100644 --- a/src/test/run-fail/issue-2061.rs +++ b/src/test/run-fail/issue-2061.rs @@ -5,7 +5,7 @@ struct R { } impl R : Drop { - fn finalize() { + fn finalize(&self) { let _y = R { b: self.b }; } } diff --git a/src/test/run-fail/morestack2.rs b/src/test/run-fail/morestack2.rs index 29ea363ecae..32b45c5396e 100644 --- a/src/test/run-fail/morestack2.rs +++ b/src/test/run-fail/morestack2.rs @@ -26,7 +26,7 @@ struct and_then_get_big_again { } impl and_then_get_big_again : Drop { - fn finalize() { + fn finalize(&self) { fn getbig(i: int) { if i != 0 { getbig(i - 1); diff --git a/src/test/run-fail/morestack3.rs b/src/test/run-fail/morestack3.rs index 9d021b96226..1892be596c1 100644 --- a/src/test/run-fail/morestack3.rs +++ b/src/test/run-fail/morestack3.rs @@ -18,7 +18,7 @@ struct and_then_get_big_again { } impl and_then_get_big_again : Drop { - fn finalize() { + fn finalize(&self) { fn getbig(i: int) { if i != 0 { getbig(i - 1); diff --git a/src/test/run-fail/morestack4.rs b/src/test/run-fail/morestack4.rs index fac54ae2507..c5d3161cbf6 100644 --- a/src/test/run-fail/morestack4.rs +++ b/src/test/run-fail/morestack4.rs @@ -18,7 +18,7 @@ struct and_then_get_big_again { } impl and_then_get_big_again : Drop { - fn finalize() {} + fn finalize(&self) {} } fn and_then_get_big_again(x:int) -> and_then_get_big_again { diff --git a/src/test/run-fail/rt-set-exit-status-fail2.rs b/src/test/run-fail/rt-set-exit-status-fail2.rs index d8c5662e193..45385927566 100644 --- a/src/test/run-fail/rt-set-exit-status-fail2.rs +++ b/src/test/run-fail/rt-set-exit-status-fail2.rs @@ -8,7 +8,7 @@ struct r { // failed has no effect and the process exits with the // runtime's exit code impl r : Drop { - fn finalize() { + fn finalize(&self) { os::set_exit_status(50); } } diff --git a/src/test/run-fail/unwind-box-res.rs b/src/test/run-fail/unwind-box-res.rs index d9e347079f4..1c61704bdbe 100644 --- a/src/test/run-fail/unwind-box-res.rs +++ b/src/test/run-fail/unwind-box-res.rs @@ -9,7 +9,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { unsafe { let _v2: ~int = cast::reinterpret_cast(&self.v); } diff --git a/src/test/run-fail/unwind-resource-fail3.rs b/src/test/run-fail/unwind-resource-fail3.rs index 628ef64626c..17acfd105bb 100644 --- a/src/test/run-fail/unwind-resource-fail3.rs +++ b/src/test/run-fail/unwind-resource-fail3.rs @@ -8,7 +8,7 @@ struct faily_box { fn faily_box(i: @int) -> faily_box { faily_box { i: i } } impl faily_box : Drop { - fn finalize() { + fn finalize(&self) { fail ~"quux"; } } diff --git a/src/test/run-pass/class-attributes-1.rs b/src/test/run-pass/class-attributes-1.rs index f3f887230d2..29abb4c9d7e 100644 --- a/src/test/run-pass/class-attributes-1.rs +++ b/src/test/run-pass/class-attributes-1.rs @@ -6,7 +6,7 @@ struct cat { impl cat: Drop { #[cat_dropper] - fn finalize() { error!("%s landed on hir feet",self.name); } + fn finalize(&self) { error!("%s landed on hir feet",self.name); } } diff --git a/src/test/run-pass/class-attributes-2.rs b/src/test/run-pass/class-attributes-2.rs index 5bcec8d3b0d..00d3730554e 100644 --- a/src/test/run-pass/class-attributes-2.rs +++ b/src/test/run-pass/class-attributes-2.rs @@ -7,7 +7,7 @@ impl cat : Drop { /** Actually, cats don't always land on their feet when you drop them. */ - fn finalize() { + fn finalize(&self) { error!("%s landed on hir feet", self.name); } } diff --git a/src/test/run-pass/class-dtor.rs b/src/test/run-pass/class-dtor.rs index 318392921d8..e9194f05778 100644 --- a/src/test/run-pass/class-dtor.rs +++ b/src/test/run-pass/class-dtor.rs @@ -4,7 +4,7 @@ struct cat { } impl cat : Drop { - fn finalize() { + fn finalize(&self) { self.done(self.meows); } } diff --git a/src/test/run-pass/drop-trait-generic.rs b/src/test/run-pass/drop-trait-generic.rs index 6df59ed8ca9..a56cd0f6eca 100644 --- a/src/test/run-pass/drop-trait-generic.rs +++ b/src/test/run-pass/drop-trait-generic.rs @@ -3,7 +3,7 @@ struct S { } impl S : core::ops::Drop { - fn finalize() { + fn finalize(&self) { io::println("bye"); } } diff --git a/src/test/run-pass/drop-trait.rs b/src/test/run-pass/drop-trait.rs index 3a379a4c9dc..f55981e58be 100644 --- a/src/test/run-pass/drop-trait.rs +++ b/src/test/run-pass/drop-trait.rs @@ -3,7 +3,7 @@ struct Foo { } impl Foo : Drop { - fn finalize() { + fn finalize(&self) { io::println("bye"); } } diff --git a/src/test/run-pass/init-res-into-things.rs b/src/test/run-pass/init-res-into-things.rs index 04520d925b1..c9824d96c9c 100644 --- a/src/test/run-pass/init-res-into-things.rs +++ b/src/test/run-pass/init-res-into-things.rs @@ -6,7 +6,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) = *(self.i) + 1; } } diff --git a/src/test/run-pass/issue-2487-a.rs b/src/test/run-pass/issue-2487-a.rs index 15c46ffbaf8..10074864632 100644 --- a/src/test/run-pass/issue-2487-a.rs +++ b/src/test/run-pass/issue-2487-a.rs @@ -4,7 +4,7 @@ struct socket { } impl socket : Drop { - fn finalize() {} + fn finalize(&self) {} } impl socket { diff --git a/src/test/run-pass/issue-2708.rs b/src/test/run-pass/issue-2708.rs index aefcca9004b..e4ff1fef539 100644 --- a/src/test/run-pass/issue-2708.rs +++ b/src/test/run-pass/issue-2708.rs @@ -6,7 +6,7 @@ struct Font { } impl Font : Drop { - fn finalize() {} + fn finalize(&self) {} } fn Font() -> Font { diff --git a/src/test/run-pass/issue-2718.rs b/src/test/run-pass/issue-2718.rs index 3148c68fe11..82ad82c64a3 100644 --- a/src/test/run-pass/issue-2718.rs +++ b/src/test/run-pass/issue-2718.rs @@ -144,7 +144,7 @@ mod pipes { } impl send_packet : Drop { - fn finalize() { + fn finalize(&self) { if self.p != None { let mut p = None; p <-> self.p; @@ -172,7 +172,7 @@ mod pipes { } impl recv_packet : Drop { - fn finalize() { + fn finalize(&self) { if self.p != None { let mut p = None; p <-> self.p; diff --git a/src/test/run-pass/issue-2735-2.rs b/src/test/run-pass/issue-2735-2.rs index 86458989ffd..501d37f7d39 100644 --- a/src/test/run-pass/issue-2735-2.rs +++ b/src/test/run-pass/issue-2735-2.rs @@ -4,7 +4,7 @@ struct defer { } impl defer : Drop { - fn finalize() { + fn finalize(&self) { *(self.b) = true; } } diff --git a/src/test/run-pass/issue-2735-3.rs b/src/test/run-pass/issue-2735-3.rs index 4a93de936bc..cfaad51f3b6 100644 --- a/src/test/run-pass/issue-2735-3.rs +++ b/src/test/run-pass/issue-2735-3.rs @@ -4,7 +4,7 @@ struct defer { } impl defer : Drop { - fn finalize() { + fn finalize(&self) { *(self.b) = true; } } diff --git a/src/test/run-pass/issue-2895.rs b/src/test/run-pass/issue-2895.rs index d15edccaa18..c45a582fd66 100644 --- a/src/test/run-pass/issue-2895.rs +++ b/src/test/run-pass/issue-2895.rs @@ -10,7 +10,7 @@ struct Kitty { } impl Kitty : Drop { - fn finalize() {} + fn finalize(&self) {} } #[cfg(target_arch = "x86_64")] diff --git a/src/test/run-pass/issue-3220.rs b/src/test/run-pass/issue-3220.rs index 273db8505a1..6e51ae80baf 100644 --- a/src/test/run-pass/issue-3220.rs +++ b/src/test/run-pass/issue-3220.rs @@ -1,7 +1,7 @@ struct thing { x: int, } impl thing : Drop { - fn finalize() {} + fn finalize(&self) {} } fn thing() -> thing { diff --git a/src/test/run-pass/issue-979.rs b/src/test/run-pass/issue-979.rs index 970afb0597e..e8e1def99c0 100644 --- a/src/test/run-pass/issue-979.rs +++ b/src/test/run-pass/issue-979.rs @@ -3,7 +3,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.b) += 1; } } diff --git a/src/test/run-pass/option-unwrap.rs b/src/test/run-pass/option-unwrap.rs index d2ae1e02a41..3294f76c25e 100644 --- a/src/test/run-pass/option-unwrap.rs +++ b/src/test/run-pass/option-unwrap.rs @@ -4,7 +4,7 @@ struct dtor { } impl dtor : Drop { - fn finalize() { + fn finalize(&self) { // abuse access to shared mutable state to write this code *self.x -= 1; } diff --git a/src/test/run-pass/pipe-presentation-examples.rs b/src/test/run-pass/pipe-presentation-examples.rs index 06c1734a28f..e29eb9787c0 100644 --- a/src/test/run-pass/pipe-presentation-examples.rs +++ b/src/test/run-pass/pipe-presentation-examples.rs @@ -69,7 +69,7 @@ struct Buffer { } impl Buffer : Drop { - fn finalize() {} + fn finalize(&self) {} } proto! double_buffer ( diff --git a/src/test/run-pass/resource-assign-is-not-copy.rs b/src/test/run-pass/resource-assign-is-not-copy.rs index 522392d99ad..8a6a9a48a04 100644 --- a/src/test/run-pass/resource-assign-is-not-copy.rs +++ b/src/test/run-pass/resource-assign-is-not-copy.rs @@ -3,7 +3,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) += 1; } } diff --git a/src/test/run-pass/resource-cycle.rs b/src/test/run-pass/resource-cycle.rs index 6b637e668ed..e9ec45d97e9 100644 --- a/src/test/run-pass/resource-cycle.rs +++ b/src/test/run-pass/resource-cycle.rs @@ -5,7 +5,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { unsafe { debug!("r's dtor: self = %x, self.v = %x, self.v's value = %x", cast::reinterpret_cast::<*r, uint>(&ptr::addr_of(&self)), diff --git a/src/test/run-pass/resource-cycle2.rs b/src/test/run-pass/resource-cycle2.rs index ec04699ae98..00225ee1190 100644 --- a/src/test/run-pass/resource-cycle2.rs +++ b/src/test/run-pass/resource-cycle2.rs @@ -11,7 +11,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { unsafe { let v2: ~int = cast::reinterpret_cast(&self.v.c); } diff --git a/src/test/run-pass/resource-cycle3.rs b/src/test/run-pass/resource-cycle3.rs index 22b0f1272a8..62703724337 100644 --- a/src/test/run-pass/resource-cycle3.rs +++ b/src/test/run-pass/resource-cycle3.rs @@ -15,7 +15,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { unsafe { let _v2: ~int = cast::reinterpret_cast(&self.v.c); // let _v3: ~int = unsafe::reinterpret_cast(self.x); diff --git a/src/test/run-pass/resource-destruct.rs b/src/test/run-pass/resource-destruct.rs index 92a57004b50..82023aa99d2 100644 --- a/src/test/run-pass/resource-destruct.rs +++ b/src/test/run-pass/resource-destruct.rs @@ -3,7 +3,7 @@ struct shrinky_pointer { } impl shrinky_pointer : Drop { - fn finalize() { + fn finalize(&self) { log(error, ~"Hello!"); **(self.i) -= 1; } } diff --git a/src/test/run-pass/resource-generic.rs b/src/test/run-pass/resource-generic.rs index 476f695e783..04c4c6672a3 100644 --- a/src/test/run-pass/resource-generic.rs +++ b/src/test/run-pass/resource-generic.rs @@ -6,7 +6,7 @@ struct finish { } impl finish : Drop { - fn finalize() { + fn finalize(&self) { self.arg.fin(self.arg.val); } } diff --git a/src/test/run-pass/resource-in-struct.rs b/src/test/run-pass/resource-in-struct.rs index b350955bec0..b4ffab2782a 100644 --- a/src/test/run-pass/resource-in-struct.rs +++ b/src/test/run-pass/resource-in-struct.rs @@ -9,7 +9,7 @@ struct close_res { } impl close_res : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) = false; } } diff --git a/src/test/run-pass/send-resource.rs b/src/test/run-pass/send-resource.rs index ebef3f39eea..f183f7cc650 100644 --- a/src/test/run-pass/send-resource.rs +++ b/src/test/run-pass/send-resource.rs @@ -6,7 +6,7 @@ struct test { } impl test : Drop { - fn finalize() {} + fn finalize(&self) {} } fn test(f: int) -> test { diff --git a/src/test/run-pass/struct-literal-dtor.rs b/src/test/run-pass/struct-literal-dtor.rs index 6bc605f2a08..27fdbcc07b9 100644 --- a/src/test/run-pass/struct-literal-dtor.rs +++ b/src/test/run-pass/struct-literal-dtor.rs @@ -3,7 +3,7 @@ struct foo { } impl foo : Drop { - fn finalize() { + fn finalize(&self) { error!("%s", self.x); } } diff --git a/src/test/run-pass/task-compare.rs b/src/test/run-pass/task-compare.rs index 2996ce8ff73..552f1a13c1c 100644 --- a/src/test/run-pass/task-compare.rs +++ b/src/test/run-pass/task-compare.rs @@ -12,7 +12,7 @@ struct notify { } impl notify : Drop { - fn finalize() { + fn finalize(&self) { error!("notify: task=%? v=%x unwinding=%b b=%b", task::get_task(), ptr::addr_of(&(*(self.v))) as uint, diff --git a/src/test/run-pass/task-killjoin-rsrc.rs b/src/test/run-pass/task-killjoin-rsrc.rs index fbbdaea2c94..68b09166b66 100644 --- a/src/test/run-pass/task-killjoin-rsrc.rs +++ b/src/test/run-pass/task-killjoin-rsrc.rs @@ -10,7 +10,7 @@ struct notify { } impl notify : Drop { - fn finalize() { + fn finalize(&self) { error!("notify: task=%? v=%x unwinding=%b b=%b", task::get_task(), ptr::addr_of(&(*(self.v))) as uint, diff --git a/src/test/run-pass/type-param-constraints.rs b/src/test/run-pass/type-param-constraints.rs index 3016778dea3..a668105ab5a 100644 --- a/src/test/run-pass/type-param-constraints.rs +++ b/src/test/run-pass/type-param-constraints.rs @@ -10,7 +10,7 @@ struct r { } impl r : Drop { - fn finalize() {} + fn finalize(&self) {} } fn r(i:int) -> r { diff --git a/src/test/run-pass/unique-pinned-nocopy-2.rs b/src/test/run-pass/unique-pinned-nocopy-2.rs index ad7e8d20400..fb5f4541634 100644 --- a/src/test/run-pass/unique-pinned-nocopy-2.rs +++ b/src/test/run-pass/unique-pinned-nocopy-2.rs @@ -3,7 +3,7 @@ struct r { } impl r : Drop { - fn finalize() { + fn finalize(&self) { *(self.i) = *(self.i) + 1; } } diff --git a/src/test/run-pass/unwind-resource.rs b/src/test/run-pass/unwind-resource.rs index 00ab35e9e61..e49a5ddc19b 100644 --- a/src/test/run-pass/unwind-resource.rs +++ b/src/test/run-pass/unwind-resource.rs @@ -6,7 +6,7 @@ struct complainer { } impl complainer : Drop { - fn finalize() { + fn finalize(&self) { error!("About to send!"); comm::send(self.c, true); error!("Sent!"); diff --git a/src/test/run-pass/unwind-resource2.rs b/src/test/run-pass/unwind-resource2.rs index 7a159464aab..8458dcfb9ea 100644 --- a/src/test/run-pass/unwind-resource2.rs +++ b/src/test/run-pass/unwind-resource2.rs @@ -6,7 +6,7 @@ struct complainer { } impl complainer : Drop { - fn finalize() {} + fn finalize(&self) {} } fn complainer(c: @int) -> complainer { diff --git a/src/test/run-pass/vec-slice-drop.rs b/src/test/run-pass/vec-slice-drop.rs index e057117c4a5..732075868bf 100644 --- a/src/test/run-pass/vec-slice-drop.rs +++ b/src/test/run-pass/vec-slice-drop.rs @@ -4,7 +4,7 @@ struct foo { } impl foo : Drop { - fn finalize() { + fn finalize(&self) { *self.x += 1; } }