diff --git a/doc/tutorial-ffi.md b/doc/tutorial-ffi.md index e3c1c48944458..3deaeb14b83f1 100644 --- a/doc/tutorial-ffi.md +++ b/doc/tutorial-ffi.md @@ -321,7 +321,7 @@ impl Unique { #[unsafe_destructor] impl Drop for Unique { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; diff --git a/doc/tutorial.md b/doc/tutorial.md index 637dbb10c2355..d786bff58e1d4 100644 --- a/doc/tutorial.md +++ b/doc/tutorial.md @@ -1898,7 +1898,7 @@ struct TimeBomb { } impl Drop for TimeBomb { - fn drop(&self) { + fn drop(&mut self) { for _ in range(0, self.explosivity) { println("blam!"); } diff --git a/src/libextra/arc.rs b/src/libextra/arc.rs index 3fbfae52c6300..ca8000c984d4a 100644 --- a/src/libextra/arc.rs +++ b/src/libextra/arc.rs @@ -313,7 +313,7 @@ struct PoisonOnFail { } impl Drop for PoisonOnFail { - fn drop(&self) { + fn drop(&mut self) { unsafe { /* assert!(!*self.failed); -- might be false in case of cond.wait() */ diff --git a/src/libextra/arena.rs b/src/libextra/arena.rs index e24e747d61ab4..63c8e2010b07a 100644 --- a/src/libextra/arena.rs +++ b/src/libextra/arena.rs @@ -93,7 +93,7 @@ fn chunk(size: uint, is_pod: bool) -> Chunk { #[unsafe_destructor] impl Drop for Arena { - fn drop(&self) { + fn drop(&mut self) { unsafe { destroy_chunk(&self.head); do self.chunks.each |chunk| { diff --git a/src/libextra/c_vec.rs b/src/libextra/c_vec.rs index 6ae67e7c794ef..30bce3a81708c 100644 --- a/src/libextra/c_vec.rs +++ b/src/libextra/c_vec.rs @@ -56,7 +56,7 @@ struct DtorRes { #[unsafe_destructor] impl Drop for DtorRes { - fn drop(&self) { + fn drop(&mut self) { match self.dtor { option::None => (), option::Some(f) => f() diff --git a/src/libextra/dlist.rs b/src/libextra/dlist.rs index ac296ad527ee5..da5d5d00e80cf 100644 --- a/src/libextra/dlist.rs +++ b/src/libextra/dlist.rs @@ -415,14 +415,11 @@ impl DList { #[unsafe_destructor] impl Drop for DList { - fn drop(&self) { - let mut_self = unsafe { - cast::transmute_mut(self) - }; + fn drop(&mut self) { // Dissolve the dlist in backwards direction // Just dropping the list_head can lead to stack exhaustion // when length is >> 1_000_000 - let mut tail = mut_self.list_tail; + let mut tail = self.list_tail; loop { match tail.resolve() { None => break, @@ -432,9 +429,9 @@ impl Drop for DList { } } } - mut_self.length = 0; - mut_self.list_head = None; - mut_self.list_tail = Rawlink::none(); + self.length = 0; + self.list_head = None; + self.list_tail = Rawlink::none(); } } diff --git a/src/libextra/future.rs b/src/libextra/future.rs index ce56a3dcaa69b..74a551c6f6d56 100644 --- a/src/libextra/future.rs +++ b/src/libextra/future.rs @@ -43,7 +43,7 @@ pub struct Future { // over ~fn's that have pipes and so forth within! #[unsafe_destructor] impl Drop for Future { - fn drop(&self) {} + fn drop(&mut self) {} } enum FutureState { diff --git a/src/libextra/rc.rs b/src/libextra/rc.rs index 86fbbd4c3cc59..fa7cd9025eb7c 100644 --- a/src/libextra/rc.rs +++ b/src/libextra/rc.rs @@ -73,7 +73,7 @@ impl Rc { #[unsafe_destructor] impl Drop for Rc { - fn drop(&self) { + fn drop(&mut self) { unsafe { if self.ptr.is_not_null() { (*self.ptr).count -= 1; @@ -218,7 +218,7 @@ impl RcMut { #[unsafe_destructor] impl Drop for RcMut { - fn drop(&self) { + fn drop(&mut self) { unsafe { if self.ptr.is_not_null() { (*self.ptr).count -= 1; diff --git a/src/libextra/task_pool.rs b/src/libextra/task_pool.rs index f1bf9e81c7251..46244c15a832e 100644 --- a/src/libextra/task_pool.rs +++ b/src/libextra/task_pool.rs @@ -34,7 +34,7 @@ pub struct TaskPool { #[unsafe_destructor] impl Drop for TaskPool { - fn drop(&self) { + fn drop(&mut self) { for channel in self.channels.iter() { channel.send(Quit); } diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs index 2b2ecb79294c4..4d3b5ae035edc 100644 --- a/src/libextra/workcache.rs +++ b/src/libextra/workcache.rs @@ -201,7 +201,7 @@ impl Database { // FIXME #4330: use &mut self here #[unsafe_destructor] impl Drop for Database { - fn drop(&self) { + fn drop(&mut self) { if self.db_dirty { self.save(); } diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index 18a7e65a6dd7a..1fbbc1db05a6d 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -105,7 +105,7 @@ pub mod jit { impl Engine for LLVMJITData {} impl Drop for LLVMJITData { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposeExecutionEngine(self.ee); llvm::LLVMContextDispose(self.llcx); diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs index beadcf3a19df8..49798288d40d0 100644 --- a/src/librustc/lib/llvm.rs +++ b/src/librustc/lib/llvm.rs @@ -2325,7 +2325,7 @@ pub struct target_data_res { } impl Drop for target_data_res { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposeTargetData(self.TD); } @@ -2361,7 +2361,7 @@ pub struct pass_manager_res { } impl Drop for pass_manager_res { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposePassManager(self.PM); } @@ -2397,7 +2397,7 @@ pub struct object_file_res { } impl Drop for object_file_res { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposeObjectFile(self.ObjectFile); } @@ -2434,7 +2434,7 @@ pub struct section_iter_res { } impl Drop for section_iter_res { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposeSectionIterator(self.SI); } diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index f0238e8f5c550..275801bc0c118 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -109,7 +109,7 @@ pub struct _InsnCtxt { _x: () } #[unsafe_destructor] impl Drop for _InsnCtxt { - fn drop(&self) { + fn drop(&mut self) { do local_data::modify(task_local_insn_key) |c| { do c.map_move |ctx| { let mut ctx = (*ctx).clone(); @@ -159,7 +159,7 @@ impl<'self> StatRecorder<'self> { #[unsafe_destructor] impl<'self> Drop for StatRecorder<'self> { - fn drop(&self) { + fn drop(&mut self) { if self.ccx.sess.trans_stats() { let end = time::precise_time_ns(); let elapsed = ((end - self.start) / 1_000_000) as uint; diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index b75b06f42b649..b659a93f5f099 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -111,7 +111,7 @@ pub struct BuilderRef_res { } impl Drop for BuilderRef_res { - fn drop(&self) { + fn drop(&mut self) { unsafe { llvm::LLVMDisposeBuilder(self.B); } diff --git a/src/librustc/middle/trans/context.rs b/src/librustc/middle/trans/context.rs index 6eb2fcf25fd3c..506e427ce410a 100644 --- a/src/librustc/middle/trans/context.rs +++ b/src/librustc/middle/trans/context.rs @@ -273,7 +273,7 @@ impl CrateContext { #[unsafe_destructor] impl Drop for CrateContext { - fn drop(&self) { + fn drop(&mut self) { unset_task_llcx(); } } diff --git a/src/librustc/rustc.rs b/src/librustc/rustc.rs index adf11a9fa2120..bca2ceb2f84a0 100644 --- a/src/librustc/rustc.rs +++ b/src/librustc/rustc.rs @@ -342,7 +342,7 @@ pub fn monitor(f: ~fn(diagnostic::Emitter)) { } impl Drop for finally { - fn drop(&self) { self.ch.send(done); } + fn drop(&mut self) { self.ch.send(done); } } let _finally = finally { ch: ch }; diff --git a/src/librustc/util/common.rs b/src/librustc/util/common.rs index eb9206a52b125..46620319a8212 100644 --- a/src/librustc/util/common.rs +++ b/src/librustc/util/common.rs @@ -40,7 +40,7 @@ pub struct _indenter { } impl Drop for _indenter { - fn drop(&self) { debug!("<<"); } + fn drop(&mut self) { debug!("<<"); } } pub fn _indenter(_i: ()) -> _indenter { diff --git a/src/librustdoc/demo.rs b/src/librustdoc/demo.rs index 3393133bc1866..23c55488332ad 100644 --- a/src/librustdoc/demo.rs +++ b/src/librustdoc/demo.rs @@ -127,7 +127,7 @@ struct Bored { } impl Drop for Bored { - fn drop(&self) { } + fn drop(&mut self) { } } /** diff --git a/src/libstd/c_str.rs b/src/libstd/c_str.rs index a2842efbf8a04..75598b300a371 100644 --- a/src/libstd/c_str.rs +++ b/src/libstd/c_str.rs @@ -127,7 +127,7 @@ impl CString { } impl Drop for CString { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; if self.owns_buffer_ { unsafe { diff --git a/src/libstd/condition.rs b/src/libstd/condition.rs index 9cd2ad79d1890..954b8bd73300c 100644 --- a/src/libstd/condition.rs +++ b/src/libstd/condition.rs @@ -87,7 +87,7 @@ struct Guard<'self, T, U> { #[unsafe_destructor] impl<'self, T, U> Drop for Guard<'self, T, U> { - fn drop(&self) { + fn drop(&mut self) { debug!("Guard: popping handler from TLS"); let curr = local_data::pop(self.cond.key); match curr { diff --git a/src/libstd/io.rs b/src/libstd/io.rs index 2ca36de4f49cc..890a53690d96a 100644 --- a/src/libstd/io.rs +++ b/src/libstd/io.rs @@ -1021,7 +1021,7 @@ impl FILERes { } impl Drop for FILERes { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; unsafe { @@ -1302,7 +1302,7 @@ impl FdRes { } impl Drop for FdRes { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; unsafe { @@ -1832,7 +1832,7 @@ pub mod fsync { #[unsafe_destructor] impl Drop for Res { - fn drop(&self) { + fn drop(&mut self) { match self.arg.opt_level { None => (), Some(level) => { diff --git a/src/libstd/ops.rs b/src/libstd/ops.rs index 756b4a10d3c90..1d4d827434b96 100644 --- a/src/libstd/ops.rs +++ b/src/libstd/ops.rs @@ -14,7 +14,7 @@ #[lang="drop"] pub trait Drop { - fn drop(&self); + fn drop(&mut self); } #[lang="add"] @@ -95,7 +95,7 @@ mod bench { } impl Drop for HasDtor { - fn drop(&self) { + fn drop(&mut self) { } } @@ -105,4 +105,4 @@ mod bench { HasDtor { x : 10 }; } } -} \ No newline at end of file +} diff --git a/src/libstd/option.rs b/src/libstd/option.rs index ce725257dfff0..9b6d0a77cd83b 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -573,7 +573,7 @@ mod tests { #[unsafe_destructor] impl ::ops::Drop for R { - fn drop(&self) { *(self.i) += 1; } + fn drop(&mut self) { *(self.i) += 1; } } fn R(i: @mut int) -> R { diff --git a/src/libstd/os.rs b/src/libstd/os.rs index c45f2af8f7ec7..6fe6a1e47e915 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -1481,7 +1481,7 @@ impl MemoryMap { #[cfg(unix)] impl Drop for MemoryMap { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; unsafe { @@ -1607,7 +1607,7 @@ impl MemoryMap { #[cfg(windows)] impl Drop for MemoryMap { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; use libc::types::os::arch::extra::{LPCVOID, HANDLE}; diff --git a/src/libstd/rt/comm.rs b/src/libstd/rt/comm.rs index 4f5f26513b4c6..a8cd9bd66d7de 100644 --- a/src/libstd/rt/comm.rs +++ b/src/libstd/rt/comm.rs @@ -363,7 +363,7 @@ impl Peekable for PortOne { #[unsafe_destructor] impl Drop for ChanOne { - fn drop(&self) { + fn drop(&mut self) { if self.suppress_finalize { return } unsafe { @@ -391,7 +391,7 @@ impl Drop for ChanOne { #[unsafe_destructor] impl Drop for PortOne { - fn drop(&self) { + fn drop(&mut self) { if self.suppress_finalize { return } unsafe { diff --git a/src/libstd/rt/kill.rs b/src/libstd/rt/kill.rs index e6003fb1a4449..92dc62490ed1b 100644 --- a/src/libstd/rt/kill.rs +++ b/src/libstd/rt/kill.rs @@ -235,7 +235,7 @@ pub struct Death { impl Drop for KillFlag { // Letting a KillFlag with a task inside get dropped would leak the task. // We could free it here, but the task should get awoken by hand somehow. - fn drop(&self) { + fn drop(&mut self) { match self.load(Relaxed) { KILL_RUNNING | KILL_KILLED => { }, _ => rtabort!("can't drop kill flag with a blocked task inside!"), @@ -685,7 +685,7 @@ impl Death { } impl Drop for Death { - fn drop(&self) { + fn drop(&mut self) { // Mustn't be in an atomic or unkillable section at task death. rtassert!(self.unkillable == 0); rtassert!(self.wont_sleep == 0); diff --git a/src/libstd/rt/local_heap.rs b/src/libstd/rt/local_heap.rs index 12ec19a1ecc67..9d0a0e0ac25d1 100644 --- a/src/libstd/rt/local_heap.rs +++ b/src/libstd/rt/local_heap.rs @@ -78,7 +78,7 @@ impl LocalHeap { impl Drop for LocalHeap { #[fixed_stack_segment] #[inline(never)] - fn drop(&self) { + fn drop(&mut self) { unsafe { rust_delete_boxed_region(self.boxed_region); rust_delete_memory_region(self.memory_region); diff --git a/src/libstd/rt/rc.rs b/src/libstd/rt/rc.rs index 18a5dd4a1145d..0a6890f627bbb 100644 --- a/src/libstd/rt/rc.rs +++ b/src/libstd/rt/rc.rs @@ -74,7 +74,7 @@ impl RC { #[unsafe_destructor] impl Drop for RC { - fn drop(&self) { + fn drop(&mut self) { assert!(self.refcount() > 0); unsafe { diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index bcf9ae4a2a841..854fdadfb00d2 100644 --- a/src/libstd/rt/sched.rs +++ b/src/libstd/rt/sched.rs @@ -1200,15 +1200,15 @@ mod test { struct S { field: () } impl Drop for S { - fn drop(&self) { - let _foo = @0; + fn drop(&mut self) { + let _foo = @0; } } let s = S { field: () }; do spawntask { - let _ss = &s; + let _ss = &s; } } } diff --git a/src/libstd/rt/stack.rs b/src/libstd/rt/stack.rs index da70659acec2e..fddee5882b9ac 100644 --- a/src/libstd/rt/stack.rs +++ b/src/libstd/rt/stack.rs @@ -53,7 +53,7 @@ impl StackSegment { } impl Drop for StackSegment { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; unsafe { diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index da81aab0f7849..09f5ee7febb3e 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -328,7 +328,7 @@ impl Task { } impl Drop for Task { - fn drop(&self) { + fn drop(&mut self) { rtdebug!("called drop for a task: %u", borrow::to_uint(self)); rtassert!(self.destroyed) } diff --git a/src/libstd/rt/thread.rs b/src/libstd/rt/thread.rs index 61db08f4813ef..8b64fda21364a 100644 --- a/src/libstd/rt/thread.rs +++ b/src/libstd/rt/thread.rs @@ -46,7 +46,7 @@ impl Thread { } impl Drop for Thread { - fn drop(&self) { + fn drop(&mut self) { #[fixed_stack_segment]; #[inline(never)]; assert!(self.joined); diff --git a/src/libstd/rt/uv/uvio.rs b/src/libstd/rt/uv/uvio.rs index b930ea2437ea8..f3b97441e8e25 100644 --- a/src/libstd/rt/uv/uvio.rs +++ b/src/libstd/rt/uv/uvio.rs @@ -187,7 +187,7 @@ impl UvEventLoop { } impl Drop for UvEventLoop { - fn drop(&self) { + fn drop(&mut self) { // XXX: Need mutable finalizer let this = unsafe { transmute::<&UvEventLoop, &mut UvEventLoop>(self) @@ -351,7 +351,7 @@ impl RemoteCallback for UvRemoteCallback { } impl Drop for UvRemoteCallback { - fn drop(&self) { + fn drop(&mut self) { unsafe { let this: &mut UvRemoteCallback = cast::transmute_mut(self); do this.exit_flag.with |should_exit| { @@ -647,7 +647,7 @@ impl UvTcpListener { } impl Drop for UvTcpListener { - fn drop(&self) { + fn drop(&mut self) { // XXX need mutable finalizer let self_ = unsafe { transmute::<&UvTcpListener, &mut UvTcpListener>(self) }; do self_.home_for_io_with_sched |self_, scheduler| { @@ -762,7 +762,7 @@ impl HomingIO for UvTcpStream { } impl Drop for UvTcpStream { - fn drop(&self) { + fn drop(&mut self) { // XXX need mutable finalizer let this = unsafe { transmute::<&UvTcpStream, &mut UvTcpStream>(self) }; do this.home_for_io_with_sched |self_, scheduler| { @@ -921,7 +921,7 @@ impl HomingIO for UvUdpSocket { } impl Drop for UvUdpSocket { - fn drop(&self) { + fn drop(&mut self) { // XXX need mutable finalizer let this = unsafe { transmute::<&UvUdpSocket, &mut UvUdpSocket>(self) }; do this.home_for_io_with_sched |self_, scheduler| { @@ -1139,7 +1139,7 @@ impl UvTimer { } impl Drop for UvTimer { - fn drop(&self) { + fn drop(&mut self) { let self_ = unsafe { transmute::<&UvTimer, &mut UvTimer>(self) }; do self_.home_for_io_with_sched |self_, scheduler| { rtdebug!("closing UvTimer"); @@ -1253,7 +1253,7 @@ impl UvFileStream { } impl Drop for UvFileStream { - fn drop(&self) { + fn drop(&mut self) { let self_ = unsafe { transmute::<&UvFileStream, &mut UvFileStream>(self) }; if self.close_on_drop { do self_.home_for_io_with_sched |self_, scheduler| { diff --git a/src/libstd/run.rs b/src/libstd/run.rs index 0fe9236253d2e..83646dc59b35e 100644 --- a/src/libstd/run.rs +++ b/src/libstd/run.rs @@ -436,12 +436,9 @@ impl Process { } impl Drop for Process { - fn drop(&self) { - // FIXME(#4330) Need self by value to get mutability. - let mut_self: &mut Process = unsafe { cast::transmute(self) }; - - mut_self.finish(); - mut_self.close_outputs(); + fn drop(&mut self) { + self.finish(); + self.close_outputs(); free_handle(self.handle); } } diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs index c3a3dc56ce233..58cea8d7d0ecb 100644 --- a/src/libstd/task/spawn.rs +++ b/src/libstd/task/spawn.rs @@ -319,40 +319,35 @@ pub struct Taskgroup { impl Drop for Taskgroup { // Runs on task exit. - fn drop(&self) { - unsafe { - // FIXME(#4330) Need self by value to get mutability. - let this: &mut Taskgroup = transmute(self); - - // If we are failing, the whole taskgroup needs to die. - do RuntimeGlue::with_task_handle_and_failing |me, failing| { - if failing { - for x in this.notifier.mut_iter() { - x.failed = true; - } - // Take everybody down with us. After this point, every - // other task in the group will see 'tg' as none, which - // indicates the whole taskgroup is failing (and forbids - // new spawns from succeeding). - let tg = do access_group(&self.tasks) |tg| { tg.take() }; - // It's safe to send kill signals outside the lock, because - // we have a refcount on all kill-handles in the group. - kill_taskgroup(tg, me); - } else { - // Remove ourselves from the group(s). - do access_group(&self.tasks) |tg| { - leave_taskgroup(tg, me, true); - } + fn drop(&mut self) { + // If we are failing, the whole taskgroup needs to die. + do RuntimeGlue::with_task_handle_and_failing |me, failing| { + if failing { + for x in self.notifier.mut_iter() { + x.failed = true; + } + // Take everybody down with us. After this point, every + // other task in the group will see 'tg' as none, which + // indicates the whole taskgroup is failing (and forbids + // new spawns from succeeding). + let tg = do access_group(&self.tasks) |tg| { tg.take() }; + // It's safe to send kill signals outside the lock, because + // we have a refcount on all kill-handles in the group. + kill_taskgroup(tg, me); + } else { + // Remove ourselves from the group(s). + do access_group(&self.tasks) |tg| { + leave_taskgroup(tg, me, true); } - // It doesn't matter whether this happens before or after dealing - // with our own taskgroup, so long as both happen before we die. - // We remove ourself from every ancestor we can, so no cleanup; no - // break. - do each_ancestor(&mut this.ancestors, |_| {}) |ancestor_group| { - leave_taskgroup(ancestor_group, me, false); - true - }; } + // It doesn't matter whether this happens before or after dealing + // with our own taskgroup, so long as both happen before we die. + // We remove ourself from every ancestor we can, so no cleanup; no + // break. + do each_ancestor(&mut self.ancestors, |_| {}) |ancestor_group| { + leave_taskgroup(ancestor_group, me, false); + true + }; } } } @@ -377,7 +372,7 @@ struct AutoNotify { } impl Drop for AutoNotify { - fn drop(&self) { + fn drop(&mut self) { let result = if self.failed { Failure } else { Success }; self.notify_chan.send(result); } diff --git a/src/libstd/unstable/atomics.rs b/src/libstd/unstable/atomics.rs index f9380e7ad1241..a32b52db1cc0a 100644 --- a/src/libstd/unstable/atomics.rs +++ b/src/libstd/unstable/atomics.rs @@ -338,7 +338,7 @@ impl AtomicOption { #[unsafe_destructor] impl Drop for AtomicOption { - fn drop(&self) { + fn drop(&mut self) { // This will ensure that the contained data is // destroyed, unless it's null. unsafe { diff --git a/src/libstd/unstable/dynamic_lib.rs b/src/libstd/unstable/dynamic_lib.rs index d8a07eeb8b7d3..4c92d9c2e362c 100644 --- a/src/libstd/unstable/dynamic_lib.rs +++ b/src/libstd/unstable/dynamic_lib.rs @@ -26,7 +26,7 @@ use result::*; pub struct DynamicLibrary { priv handle: *libc::c_void } impl Drop for DynamicLibrary { - fn drop(&self) { + fn drop(&mut self) { match do dl::check_for_errors_in { unsafe { dl::close(self.handle) diff --git a/src/libstd/unstable/finally.rs b/src/libstd/unstable/finally.rs index 42820aaaa959d..6833ca6d7cfef 100644 --- a/src/libstd/unstable/finally.rs +++ b/src/libstd/unstable/finally.rs @@ -64,7 +64,7 @@ struct Finallyalizer<'self> { #[unsafe_destructor] impl<'self> Drop for Finallyalizer<'self> { - fn drop(&self) { + fn drop(&mut self) { (self.dtor)(); } } diff --git a/src/libstd/unstable/sync.rs b/src/libstd/unstable/sync.rs index 26313323291e5..1dafeb27a0e32 100644 --- a/src/libstd/unstable/sync.rs +++ b/src/libstd/unstable/sync.rs @@ -220,7 +220,7 @@ impl Clone for UnsafeArc { #[unsafe_destructor] impl Drop for UnsafeArc{ - fn drop(&self) { + fn drop(&mut self) { unsafe { // Happens when destructing an unwrapper's handle and from `#[unsafe_no_drop_flag]` if self.data.is_null() { @@ -308,7 +308,7 @@ pub struct LittleLock { } impl Drop for LittleLock { - fn drop(&self) { + fn drop(&mut self) { unsafe { rust_destroy_little_lock(self.l); } diff --git a/src/libstd/util.rs b/src/libstd/util.rs index 5085f337d4bba..e8bcceb85fa68 100644 --- a/src/libstd/util.rs +++ b/src/libstd/util.rs @@ -88,7 +88,7 @@ impl NonCopyable { } impl Drop for NonCopyable { - fn drop(&self) { } + fn drop(&mut self) { } } /// A type with no inhabitants @@ -188,7 +188,7 @@ mod tests { struct Foo { five: int } impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { assert_eq!(self.five, 5); unsafe { did_run = true; diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index f05452bb6c504..4aad5c24d0f3d 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -341,7 +341,7 @@ pub struct Parser { #[unsafe_destructor] impl Drop for Parser { /* do not copy the parser; its state is tied to outside state */ - fn drop(&self) {} + fn drop(&mut self) {} } fn is_plain_ident_or_underscore(t: &token::Token) -> bool { diff --git a/src/test/auxiliary/issue-2526.rs b/src/test/auxiliary/issue-2526.rs index cbdd6b56b7da4..8ed65628f54f9 100644 --- a/src/test/auxiliary/issue-2526.rs +++ b/src/test/auxiliary/issue-2526.rs @@ -21,7 +21,7 @@ struct arc_destruct { #[unsafe_destructor] impl Drop for arc_destruct { - fn drop(&self) {} + fn drop(&mut self) {} } fn arc_destruct(data: int) -> arc_destruct { @@ -43,7 +43,7 @@ struct context_res { } impl Drop for context_res { - fn drop(&self) {} + fn drop(&mut 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 9c9b3d9f24340..f9bbfa7ecce07 100644 --- a/src/test/auxiliary/issue-3012-1.rs +++ b/src/test/auxiliary/issue-3012-1.rs @@ -19,7 +19,7 @@ pub mod socket { } impl Drop for socket_handle { - fn drop(&self) { + fn drop(&mut self) { /* c::close(self.sockfd); */ } } diff --git a/src/test/auxiliary/issue2170lib.rs b/src/test/auxiliary/issue2170lib.rs index ec5d8baf25900..b311ee3567467 100644 --- a/src/test/auxiliary/issue2170lib.rs +++ b/src/test/auxiliary/issue2170lib.rs @@ -16,7 +16,7 @@ pub struct rsrc { } impl Drop for rsrc { - fn drop(&self) { + fn drop(&mut self) { foo(self.x); } } diff --git a/src/test/auxiliary/moves_based_on_type_lib.rs b/src/test/auxiliary/moves_based_on_type_lib.rs index f45b80715953e..fe403a56a4be6 100644 --- a/src/test/auxiliary/moves_based_on_type_lib.rs +++ b/src/test/auxiliary/moves_based_on_type_lib.rs @@ -15,7 +15,7 @@ pub struct S { } impl Drop for S { - fn drop(&self) { + fn drop(&mut self) { println("goodbye"); } } diff --git a/src/test/bench/task-perf-alloc-unwind.rs b/src/test/bench/task-perf-alloc-unwind.rs index 9718a12c83f13..f383f7a101fcc 100644 --- a/src/test/bench/task-perf-alloc-unwind.rs +++ b/src/test/bench/task-perf-alloc-unwind.rs @@ -58,7 +58,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) {} + fn drop(&mut 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 6353d7c6581b1..3d1cca46085db 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 @@ -11,7 +11,7 @@ struct X { x: () } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 6ea5f85797f18..a1803a621a53f 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 @@ -11,7 +11,7 @@ struct X { x: (), } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 8f0642896f1e2..34a9c0b8fc26d 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 @@ -11,7 +11,7 @@ struct X { x: (), } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 859bf7bd26d9c..2aa3379993b7a 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 @@ -11,7 +11,7 @@ struct X { x: (), } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 a1243dd01d9f7..7143ce0252b73 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 @@ -11,7 +11,7 @@ struct X { x: (), } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 c9b627f55f803..df42244fd0fc8 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 @@ -13,7 +13,7 @@ struct r; impl Drop for r { - fn drop(&self) { + fn drop(&mut 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 98099360f3c71..1c725a0dd0e03 100644 --- a/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs +++ b/src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs @@ -14,7 +14,7 @@ struct defer<'self> { #[unsafe_destructor] impl<'self> Drop for defer<'self> { - fn drop(&self) { + fn drop(&mut self) { unsafe { error!("%?", self.x); } diff --git a/src/test/compile-fail/borrowck-move-out-of-struct-with-dtor.rs b/src/test/compile-fail/borrowck-move-out-of-struct-with-dtor.rs index 4407329f49775..ade9ce9568f95 100644 --- a/src/test/compile-fail/borrowck-move-out-of-struct-with-dtor.rs +++ b/src/test/compile-fail/borrowck-move-out-of-struct-with-dtor.rs @@ -1,6 +1,6 @@ struct S {f:~str} impl Drop for S { - fn drop(&self) { println(self.f); } + fn drop(&mut self) { println(self.f); } } fn move_in_match() { diff --git a/src/test/compile-fail/borrowck-move-out-of-tuple-struct-with-dtor.rs b/src/test/compile-fail/borrowck-move-out-of-tuple-struct-with-dtor.rs index 400a4f07951fc..1a0fc9e3b3b4d 100644 --- a/src/test/compile-fail/borrowck-move-out-of-tuple-struct-with-dtor.rs +++ b/src/test/compile-fail/borrowck-move-out-of-tuple-struct-with-dtor.rs @@ -1,6 +1,6 @@ struct S(~str); impl Drop for S { - fn drop(&self) { println(**self); } + fn drop(&mut self) { println(**self); } } fn move_in_match() { diff --git a/src/test/compile-fail/copy-a-resource.rs b/src/test/compile-fail/copy-a-resource.rs index a90b04b79adc1..c5f5861de825d 100644 --- a/src/test/compile-fail/copy-a-resource.rs +++ b/src/test/compile-fail/copy-a-resource.rs @@ -13,7 +13,7 @@ struct foo { } impl Drop for foo { - fn drop(&self) {} + fn drop(&mut self) {} } fn foo(i:int) -> foo { diff --git a/src/test/compile-fail/disallowed-deconstructing-destructing-struct-let.rs b/src/test/compile-fail/disallowed-deconstructing-destructing-struct-let.rs index 4652aa0d3f125..2a4d46941b977 100644 --- a/src/test/compile-fail/disallowed-deconstructing-destructing-struct-let.rs +++ b/src/test/compile-fail/disallowed-deconstructing-destructing-struct-let.rs @@ -13,7 +13,7 @@ struct X { } impl Drop for X { - fn drop(&self) { + fn drop(&mut self) { error!("value: %s", self.x); } } diff --git a/src/test/compile-fail/disallowed-deconstructing-destructing-struct-match.rs b/src/test/compile-fail/disallowed-deconstructing-destructing-struct-match.rs index 748114a4f12f6..ecb02c4307d3e 100644 --- a/src/test/compile-fail/disallowed-deconstructing-destructing-struct-match.rs +++ b/src/test/compile-fail/disallowed-deconstructing-destructing-struct-match.rs @@ -13,7 +13,7 @@ struct X { } impl Drop for X { - fn drop(&self) { + fn drop(&mut 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 2eb58d4961231..e65d5966b277a 100644 --- a/src/test/compile-fail/drop-on-non-struct.rs +++ b/src/test/compile-fail/drop-on-non-struct.rs @@ -12,7 +12,7 @@ type Foo = @[u8]; impl Drop for Foo { //~ ERROR the Drop trait may only be implemented //~^ ERROR cannot provide an extension implementation - fn drop(&self) { + fn drop(&mut self) { 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 5ffc9ea08eda7..4a34f9c42be40 100644 --- a/src/test/compile-fail/explicit-call-to-dtor.rs +++ b/src/test/compile-fail/explicit-call-to-dtor.rs @@ -13,7 +13,7 @@ struct Foo { } impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { 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 ace31183d76a0..2a5c260910b6f 100644 --- a/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs +++ b/src/test/compile-fail/explicit-call-to-supertrait-dtor.rs @@ -17,7 +17,7 @@ trait Bar : Drop { } impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { println("kaboom"); } } diff --git a/src/test/compile-fail/functional-struct-update-noncopyable.rs b/src/test/compile-fail/functional-struct-update-noncopyable.rs index dd881790ba880..02db789519596 100644 --- a/src/test/compile-fail/functional-struct-update-noncopyable.rs +++ b/src/test/compile-fail/functional-struct-update-noncopyable.rs @@ -17,7 +17,7 @@ use extra::arc::*; struct A { y: Arc, x: Arc } impl Drop for A { - fn drop(&self) { println(fmt!("x=%?", self.x.get())); } + fn drop(&mut self) { println(fmt!("x=%?", self.x.get())); } } fn main() { let a = A { y: Arc::new(1), x: Arc::new(2) }; diff --git a/src/test/compile-fail/issue-2548.rs b/src/test/compile-fail/issue-2548.rs index cb0b8afbf8ba4..5822b35c74ec6 100644 --- a/src/test/compile-fail/issue-2548.rs +++ b/src/test/compile-fail/issue-2548.rs @@ -18,7 +18,7 @@ struct foo { #[unsafe_destructor] impl Drop for foo { - fn drop(&self) { + fn drop(&mut self) { unsafe { println("Goodbye, World!"); *self.x += 1; diff --git a/src/test/compile-fail/issue-2823.rs b/src/test/compile-fail/issue-2823.rs index 95cb5c6475c18..bf00dc139d0f5 100644 --- a/src/test/compile-fail/issue-2823.rs +++ b/src/test/compile-fail/issue-2823.rs @@ -13,7 +13,7 @@ struct C { } impl Drop for C { - fn drop(&self) { + fn drop(&mut self) { error!("dropping: %?", self.x); } } diff --git a/src/test/compile-fail/issue-3214.rs b/src/test/compile-fail/issue-3214.rs index 8eb110e6ce9b3..5be0a1e708bab 100644 --- a/src/test/compile-fail/issue-3214.rs +++ b/src/test/compile-fail/issue-3214.rs @@ -15,7 +15,7 @@ fn foo() { } impl Drop for foo { - fn drop(&self) {} + fn drop(&mut self) {} } } fn main() { } diff --git a/src/test/compile-fail/kindck-destructor-owned.rs b/src/test/compile-fail/kindck-destructor-owned.rs index 07adc3d81e5f3..7ab7aeea85cad 100644 --- a/src/test/compile-fail/kindck-destructor-owned.rs +++ b/src/test/compile-fail/kindck-destructor-owned.rs @@ -3,7 +3,7 @@ struct Foo { } impl Drop for Foo { //~ ERROR cannot implement a destructor on a structure that does not satisfy Send - fn drop(&self) { + fn drop(&mut self) { *self.f = 10; } } diff --git a/src/test/compile-fail/no-send-res-ports.rs b/src/test/compile-fail/no-send-res-ports.rs index 5f0d4bc60ac01..e7b897ad90683 100644 --- a/src/test/compile-fail/no-send-res-ports.rs +++ b/src/test/compile-fail/no-send-res-ports.rs @@ -20,7 +20,7 @@ fn main() { #[unsafe_destructor] impl Drop for foo { - fn drop(&self) {} + fn drop(&mut self) {} } fn foo(x: Port<()>) -> foo { diff --git a/src/test/compile-fail/noncopyable-class.rs b/src/test/compile-fail/noncopyable-class.rs index e64d5b67ab768..9d057998c790d 100644 --- a/src/test/compile-fail/noncopyable-class.rs +++ b/src/test/compile-fail/noncopyable-class.rs @@ -15,7 +15,7 @@ struct bar { } impl Drop for bar { - fn drop(&self) {} + fn drop(&mut 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 ccbe265000df2..822c681211634 100644 --- a/src/test/compile-fail/pinned-deep-copy.rs +++ b/src/test/compile-fail/pinned-deep-copy.rs @@ -14,7 +14,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { *(self.i) = *(self.i) + 1; } 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 c997ce2a28152..ab3f8496eaf26 100644 --- a/src/test/compile-fail/repeat-to-run-dtor-twice.rs +++ b/src/test/compile-fail/repeat-to-run-dtor-twice.rs @@ -17,7 +17,7 @@ struct Foo { } impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { println("Goodbye!"); } } diff --git a/src/test/compile-fail/unique-object-noncopyable.rs b/src/test/compile-fail/unique-object-noncopyable.rs index ace0f516eef03..a9a7966ebeb98 100644 --- a/src/test/compile-fail/unique-object-noncopyable.rs +++ b/src/test/compile-fail/unique-object-noncopyable.rs @@ -17,7 +17,7 @@ struct Bar { } impl Drop for Bar { - fn drop(&self) {} + fn drop(&mut self) {} } impl Foo for Bar { diff --git a/src/test/compile-fail/unique-pinned-nocopy.rs b/src/test/compile-fail/unique-pinned-nocopy.rs index 0218899bf2ed5..50bb074fc7ac7 100644 --- a/src/test/compile-fail/unique-pinned-nocopy.rs +++ b/src/test/compile-fail/unique-pinned-nocopy.rs @@ -13,7 +13,7 @@ struct r { } impl Drop for r { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() { diff --git a/src/test/compile-fail/unique-vec-res.rs b/src/test/compile-fail/unique-vec-res.rs index bee36ea829345..0fcbc847850be 100644 --- a/src/test/compile-fail/unique-vec-res.rs +++ b/src/test/compile-fail/unique-vec-res.rs @@ -14,7 +14,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { *(self.i) = *(self.i) + 1; } diff --git a/src/test/compile-fail/use-after-move-self-based-on-type.rs b/src/test/compile-fail/use-after-move-self-based-on-type.rs index 0622c028c631b..5440e1e2728c5 100644 --- a/src/test/compile-fail/use-after-move-self-based-on-type.rs +++ b/src/test/compile-fail/use-after-move-self-based-on-type.rs @@ -3,7 +3,7 @@ struct S { } impl Drop for S { - fn drop(&self) {} + fn drop(&mut self) {} } impl S { diff --git a/src/test/compile-fail/vec-res-add.rs b/src/test/compile-fail/vec-res-add.rs index 2d59e490e0d7b..e7441a2c96818 100644 --- a/src/test/compile-fail/vec-res-add.rs +++ b/src/test/compile-fail/vec-res-add.rs @@ -17,7 +17,7 @@ struct r { fn r(i:int) -> r { r { i: i } } impl Drop for r { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() { diff --git a/src/test/debug-info/boxed-struct.rs b/src/test/debug-info/boxed-struct.rs index e996b249d369e..47c9bd469d409 100644 --- a/src/test/debug-info/boxed-struct.rs +++ b/src/test/debug-info/boxed-struct.rs @@ -42,7 +42,7 @@ struct StructWithDestructor { } impl Drop for StructWithDestructor { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() { diff --git a/src/test/debug-info/c-style-enum-in-composite.rs b/src/test/debug-info/c-style-enum-in-composite.rs index d3e27c85b745a..a21c98b9d1b82 100644 --- a/src/test/debug-info/c-style-enum-in-composite.rs +++ b/src/test/debug-info/c-style-enum-in-composite.rs @@ -78,7 +78,7 @@ struct StructWithDrop { } impl Drop for StructWithDrop { - fn drop(&self) {()} + fn drop(&mut self) {()} } fn main() { diff --git a/src/test/debug-info/packed-struct-with-destructor.rs b/src/test/debug-info/packed-struct-with-destructor.rs index 47e4a26ab4ba2..f684a60b68805 100644 --- a/src/test/debug-info/packed-struct-with-destructor.rs +++ b/src/test/debug-info/packed-struct-with-destructor.rs @@ -49,7 +49,7 @@ struct Packed { } impl Drop for Packed { - fn drop(&self) {} + fn drop(&mut self) {} } #[packed] @@ -74,7 +74,7 @@ struct Unpacked { } impl Drop for Unpacked { - fn drop(&self) {} + fn drop(&mut self) {} } #[packed] @@ -94,7 +94,7 @@ struct PackedInPackedWithDrop { } impl Drop for PackedInPackedWithDrop { - fn drop(&self) {} + fn drop(&mut self) {} } struct PackedInUnpackedWithDrop { @@ -105,7 +105,7 @@ struct PackedInUnpackedWithDrop { } impl Drop for PackedInUnpackedWithDrop { - fn drop(&self) {} + fn drop(&mut self) {} } #[packed] @@ -117,7 +117,7 @@ struct UnpackedInPackedWithDrop { } impl Drop for UnpackedInPackedWithDrop { - fn drop(&self) {} + fn drop(&mut self) {} } struct DeeplyNested { diff --git a/src/test/debug-info/struct-with-destructor.rs b/src/test/debug-info/struct-with-destructor.rs index 8994a582b58fc..18c5994fe2a8c 100644 --- a/src/test/debug-info/struct-with-destructor.rs +++ b/src/test/debug-info/struct-with-destructor.rs @@ -37,7 +37,7 @@ struct WithDestructor { } impl Drop for WithDestructor { - fn drop(&self) {} + fn drop(&mut self) {} } struct NoDestructorGuarded { @@ -55,7 +55,7 @@ struct NestedInner { } impl Drop for NestedInner { - fn drop(&self) {} + fn drop(&mut self) {} } struct NestedOuter { diff --git a/src/test/run-fail/issue-2061.rs b/src/test/run-fail/issue-2061.rs index 3e78fd1f7db5b..451105b0c529e 100644 --- a/src/test/run-fail/issue-2061.rs +++ b/src/test/run-fail/issue-2061.rs @@ -15,7 +15,7 @@ struct R { } impl Drop for R { - fn drop(&self) { + fn drop(&mut self) { let _y = R { b: self.b }; } } diff --git a/src/test/run-fail/morestack2.rs b/src/test/run-fail/morestack2.rs index bf03695855e4a..5ac3092640038 100644 --- a/src/test/run-fail/morestack2.rs +++ b/src/test/run-fail/morestack2.rs @@ -45,7 +45,7 @@ struct and_then_get_big_again { } impl Drop for and_then_get_big_again { - fn drop(&self) { + fn drop(&mut 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 4a8586fd19f35..e6f219710b37b 100644 --- a/src/test/run-fail/morestack3.rs +++ b/src/test/run-fail/morestack3.rs @@ -31,7 +31,7 @@ struct and_then_get_big_again { } impl Drop for and_then_get_big_again { - fn drop(&self) { + fn drop(&mut 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 b6fe25bc7a2ed..02a65e91d0445 100644 --- a/src/test/run-fail/morestack4.rs +++ b/src/test/run-fail/morestack4.rs @@ -31,7 +31,7 @@ struct and_then_get_big_again { } impl Drop for and_then_get_big_again { - fn drop(&self) {} + fn drop(&mut 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 d78dedfa39dc0..01f745850906e 100644 --- a/src/test/run-fail/rt-set-exit-status-fail2.rs +++ b/src/test/run-fail/rt-set-exit-status-fail2.rs @@ -21,7 +21,7 @@ struct r { // failed has no effect and the process exits with the // runtime's exit code impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { os::set_exit_status(50); } } diff --git a/src/test/run-fail/too-much-recursion-unwinding.rs b/src/test/run-fail/too-much-recursion-unwinding.rs index 04dea449172da..62d25915431a9 100644 --- a/src/test/run-fail/too-much-recursion-unwinding.rs +++ b/src/test/run-fail/too-much-recursion-unwinding.rs @@ -24,7 +24,7 @@ struct r { } impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { if !*(self.recursed) { *(self.recursed) = true; diff --git a/src/test/run-fail/unwind-box-res.rs b/src/test/run-fail/unwind-box-res.rs index 7f022d5761c23..c8a3e77a18c46 100644 --- a/src/test/run-fail/unwind-box-res.rs +++ b/src/test/run-fail/unwind-box-res.rs @@ -21,7 +21,7 @@ struct r { } impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { let _v2: ~int = cast::transmute(self.v); } diff --git a/src/test/run-fail/unwind-resource-fail.rs b/src/test/run-fail/unwind-resource-fail.rs index d695caf7b5f97..6526455b8e2e0 100644 --- a/src/test/run-fail/unwind-resource-fail.rs +++ b/src/test/run-fail/unwind-resource-fail.rs @@ -15,7 +15,7 @@ struct r { } impl Drop for r { - fn drop(&self) { fail!("squirrel") } + fn drop(&mut self) { fail!("squirrel") } } fn r(i: int) -> r { r { i: i } } diff --git a/src/test/run-fail/unwind-resource-fail2.rs b/src/test/run-fail/unwind-resource-fail2.rs index 6ebb4a742c43c..67e1d0e8f92ac 100644 --- a/src/test/run-fail/unwind-resource-fail2.rs +++ b/src/test/run-fail/unwind-resource-fail2.rs @@ -16,7 +16,7 @@ struct r { } impl Drop for r { - fn drop(&self) { fail!("wombat") } + fn drop(&mut self) { fail!("wombat") } } fn r(i: int) -> r { r { i: i } } diff --git a/src/test/run-fail/unwind-resource-fail3.rs b/src/test/run-fail/unwind-resource-fail3.rs index 2de9d4cec77ef..231f6e7b7d579 100644 --- a/src/test/run-fail/unwind-resource-fail3.rs +++ b/src/test/run-fail/unwind-resource-fail3.rs @@ -19,7 +19,7 @@ fn faily_box(i: @int) -> faily_box { faily_box { i: i } } #[unsafe_destructor] impl Drop for faily_box { - fn drop(&self) { + fn drop(&mut self) { fail!("quux"); } } diff --git a/src/test/run-pass/attr-no-drop-flag-size.rs b/src/test/run-pass/attr-no-drop-flag-size.rs index 87c476d781e7e..e5470a1cff472 100644 --- a/src/test/run-pass/attr-no-drop-flag-size.rs +++ b/src/test/run-pass/attr-no-drop-flag-size.rs @@ -17,7 +17,7 @@ struct Test { #[unsafe_destructor] impl Drop for Test { - fn drop(&self) { } + fn drop(&mut self) { } } fn main() { diff --git a/src/test/run-pass/borrowck-unary-move-2.rs b/src/test/run-pass/borrowck-unary-move-2.rs index c52371de54af0..2ab0f4262fb5c 100644 --- a/src/test/run-pass/borrowck-unary-move-2.rs +++ b/src/test/run-pass/borrowck-unary-move-2.rs @@ -13,7 +13,7 @@ struct noncopyable { } impl Drop for noncopyable { - fn drop(&self) { + fn drop(&mut self) { error!("dropped"); } } diff --git a/src/test/run-pass/class-attributes-1.rs b/src/test/run-pass/class-attributes-1.rs index 108ae023e12ab..2165f73c3bf4c 100644 --- a/src/test/run-pass/class-attributes-1.rs +++ b/src/test/run-pass/class-attributes-1.rs @@ -16,7 +16,7 @@ struct cat { impl Drop for cat { #[cat_dropper] - fn drop(&self) { error!("%s landed on hir feet" , self . name); } + fn drop(&mut 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 02279677276f2..30cafff0388c5 100644 --- a/src/test/run-pass/class-attributes-2.rs +++ b/src/test/run-pass/class-attributes-2.rs @@ -17,7 +17,7 @@ impl Drop for cat { /** Actually, cats don't always land on their feet when you drop them. */ - fn drop(&self) { + fn drop(&mut 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 c294670faa3d9..8ee382eaa38f9 100644 --- a/src/test/run-pass/class-dtor.rs +++ b/src/test/run-pass/class-dtor.rs @@ -14,7 +14,7 @@ struct cat { } impl Drop for cat { - fn drop(&self) { + fn drop(&mut 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 cb5a5294acf92..39453af83c381 100644 --- a/src/test/run-pass/drop-trait-generic.rs +++ b/src/test/run-pass/drop-trait-generic.rs @@ -14,7 +14,7 @@ struct S { #[unsafe_destructor] impl ::std::ops::Drop for S { - fn drop(&self) { + fn drop(&mut self) { println("bye"); } } diff --git a/src/test/run-pass/drop-trait.rs b/src/test/run-pass/drop-trait.rs index 35d59770d12e8..e36379295c419 100644 --- a/src/test/run-pass/drop-trait.rs +++ b/src/test/run-pass/drop-trait.rs @@ -13,7 +13,7 @@ struct Foo { } impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { 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 0b5e58526f634..fb6204866dfdf 100644 --- a/src/test/run-pass/init-res-into-things.rs +++ b/src/test/run-pass/init-res-into-things.rs @@ -19,7 +19,7 @@ struct Box { x: r } #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut 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 0f9f1102aeac7..c12325e6ff52e 100644 --- a/src/test/run-pass/issue-2487-a.rs +++ b/src/test/run-pass/issue-2487-a.rs @@ -14,7 +14,7 @@ struct socket { } impl Drop for socket { - fn drop(&self) {} + fn drop(&mut self) {} } impl socket { diff --git a/src/test/run-pass/issue-2708.rs b/src/test/run-pass/issue-2708.rs index 44ace16fb95ea..1fce8e5ce4996 100644 --- a/src/test/run-pass/issue-2708.rs +++ b/src/test/run-pass/issue-2708.rs @@ -16,7 +16,7 @@ struct Font { } impl Drop for Font { - fn drop(&self) {} + fn drop(&mut self) {} } fn Font() -> Font { diff --git a/src/test/run-pass/issue-2718.rs b/src/test/run-pass/issue-2718.rs index edfae096407b6..19f0843efd82c 100644 --- a/src/test/run-pass/issue-2718.rs +++ b/src/test/run-pass/issue-2718.rs @@ -161,7 +161,7 @@ pub mod pipes { #[unsafe_destructor] impl Drop for send_packet { - fn drop(&self) { + fn drop(&mut self) { unsafe { if self.p != None { let self_p: &mut Option<*packet> = @@ -191,7 +191,7 @@ pub mod pipes { #[unsafe_destructor] impl Drop for recv_packet { - fn drop(&self) { + fn drop(&mut self) { unsafe { if self.p != None { let self_p: &mut Option<*packet> = diff --git a/src/test/run-pass/issue-2735-2.rs b/src/test/run-pass/issue-2735-2.rs index b44d50921a5ea..3be634c1e58f8 100644 --- a/src/test/run-pass/issue-2735-2.rs +++ b/src/test/run-pass/issue-2735-2.rs @@ -15,7 +15,7 @@ struct defer { #[unsafe_destructor] impl Drop for defer { - fn drop(&self) { + fn drop(&mut 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 902b2f69d614a..8999ffd5f7f09 100644 --- a/src/test/run-pass/issue-2735-3.rs +++ b/src/test/run-pass/issue-2735-3.rs @@ -15,7 +15,7 @@ struct defer { #[unsafe_destructor] impl Drop for defer { - fn drop(&self) { + fn drop(&mut self) { *self.b = true; } } diff --git a/src/test/run-pass/issue-2895.rs b/src/test/run-pass/issue-2895.rs index a80a079b69514..f325756d36876 100644 --- a/src/test/run-pass/issue-2895.rs +++ b/src/test/run-pass/issue-2895.rs @@ -19,7 +19,7 @@ struct Kitty { } impl Drop for Kitty { - fn drop(&self) {} + fn drop(&mut 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 dce6d8f0bf104..9c44a7cfcc307 100644 --- a/src/test/run-pass/issue-3220.rs +++ b/src/test/run-pass/issue-3220.rs @@ -11,7 +11,7 @@ struct thing { x: int, } impl Drop for thing { - fn drop(&self) {} + fn drop(&mut self) {} } fn thing() -> thing { diff --git a/src/test/run-pass/issue-3563-3.rs b/src/test/run-pass/issue-3563-3.rs index 3c4c4889ba2f8..9040d5b5fb5f9 100644 --- a/src/test/run-pass/issue-3563-3.rs +++ b/src/test/run-pass/issue-3563-3.rs @@ -57,7 +57,7 @@ struct AsciiArt { } impl Drop for AsciiArt { - fn drop(&self) {} + fn drop(&mut self) {} } // It's common to define a constructor sort of function to create struct instances. diff --git a/src/test/run-pass/issue-4252.rs b/src/test/run-pass/issue-4252.rs index de1f630a245b8..121757fb59046 100644 --- a/src/test/run-pass/issue-4252.rs +++ b/src/test/run-pass/issue-4252.rs @@ -26,7 +26,7 @@ impl X for Y { } impl Drop for Z { - fn drop(&self) { + fn drop(&mut self) { self.x.call(); // Adding this statement causes an ICE. } } diff --git a/src/test/run-pass/issue-4735.rs b/src/test/run-pass/issue-4735.rs index c1ea98283b15c..8451d281aa0ab 100644 --- a/src/test/run-pass/issue-4735.rs +++ b/src/test/run-pass/issue-4735.rs @@ -15,7 +15,7 @@ use std::libc::c_void; struct NonCopyable(*c_void); impl Drop for NonCopyable { - fn drop(&self) { + fn drop(&mut self) { let p = **self; let _v = unsafe { transmute::<*c_void, ~int>(p) }; } diff --git a/src/test/run-pass/issue-6341.rs b/src/test/run-pass/issue-6341.rs index 29fc074430584..f57482b67e049 100644 --- a/src/test/run-pass/issue-6341.rs +++ b/src/test/run-pass/issue-6341.rs @@ -12,7 +12,7 @@ struct A { x: uint } impl Drop for A { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() {} \ No newline at end of file diff --git a/src/test/run-pass/issue-6344-let.rs b/src/test/run-pass/issue-6344-let.rs index 5cda069002981..6e0b6101d3748 100644 --- a/src/test/run-pass/issue-6344-let.rs +++ b/src/test/run-pass/issue-6344-let.rs @@ -10,7 +10,7 @@ struct A { x: uint } impl Drop for A { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() { diff --git a/src/test/run-pass/issue-6344-match.rs b/src/test/run-pass/issue-6344-match.rs index 4b1d274c40df9..b9429fc63fd28 100644 --- a/src/test/run-pass/issue-6344-match.rs +++ b/src/test/run-pass/issue-6344-match.rs @@ -10,7 +10,7 @@ struct A { x: uint } impl Drop for A { - fn drop(&self) {} + fn drop(&mut self) {} } fn main() { diff --git a/src/test/run-pass/issue-979.rs b/src/test/run-pass/issue-979.rs index a68aaeb38a297..4c4f19d51664e 100644 --- a/src/test/run-pass/issue-979.rs +++ b/src/test/run-pass/issue-979.rs @@ -14,7 +14,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { *(self.b) += 1; } } diff --git a/src/test/run-pass/newtype-struct-drop-run.rs b/src/test/run-pass/newtype-struct-drop-run.rs index b917bf0810b2d..578f80f1ca51e 100644 --- a/src/test/run-pass/newtype-struct-drop-run.rs +++ b/src/test/run-pass/newtype-struct-drop-run.rs @@ -14,7 +14,7 @@ struct Foo(@mut int); #[unsafe_destructor] impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { ***self = 23; } } diff --git a/src/test/run-pass/newtype-struct-with-dtor.rs b/src/test/run-pass/newtype-struct-with-dtor.rs index b58c8738295da..37b9b5fe06837 100644 --- a/src/test/run-pass/newtype-struct-with-dtor.rs +++ b/src/test/run-pass/newtype-struct-with-dtor.rs @@ -5,7 +5,7 @@ pub struct Fd(c_int); impl Drop for Fd { #[fixed_stack_segment] #[inline(never)] - fn drop(&self) { + fn drop(&mut self) { unsafe { libc::close(**self); } diff --git a/src/test/run-pass/option-unwrap.rs b/src/test/run-pass/option-unwrap.rs index a469e4b86ebcd..66cd7f2b55f74 100644 --- a/src/test/run-pass/option-unwrap.rs +++ b/src/test/run-pass/option-unwrap.rs @@ -15,7 +15,7 @@ struct dtor { #[unsafe_destructor] impl Drop for dtor { - fn drop(&self) { + fn drop(&mut self) { // abuse access to shared mutable state to write this code *self.x -= 1; } 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 0f6aaeb3861d4..dd5450de62fdb 100644 --- a/src/test/run-pass/resource-assign-is-not-copy.rs +++ b/src/test/run-pass/resource-assign-is-not-copy.rs @@ -14,7 +14,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { *(self.i) += 1; } } diff --git a/src/test/run-pass/resource-cycle.rs b/src/test/run-pass/resource-cycle.rs index db73aac2eae4e..a5354fd01cd83 100644 --- a/src/test/run-pass/resource-cycle.rs +++ b/src/test/run-pass/resource-cycle.rs @@ -17,10 +17,10 @@ struct r { } impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { info!("r's dtor: self = %x, self.v = %x, self.v's value = %x", - cast::transmute::<*r, uint>(self), + cast::transmute::<*mut r, uint>(self), cast::transmute::<**int, uint>(&(self.v)), cast::transmute::<*int, uint>(self.v)); let _v2: ~int = cast::transmute(self.v); diff --git a/src/test/run-pass/resource-cycle2.rs b/src/test/run-pass/resource-cycle2.rs index 0cfd3a93e5350..45ee6ce802149 100644 --- a/src/test/run-pass/resource-cycle2.rs +++ b/src/test/run-pass/resource-cycle2.rs @@ -23,7 +23,7 @@ struct r { } impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { unsafe { let _v2: ~int = cast::transmute(self.v.c); } diff --git a/src/test/run-pass/resource-cycle3.rs b/src/test/run-pass/resource-cycle3.rs index 1e0d8447aeb55..0435f0bdcfd8b 100644 --- a/src/test/run-pass/resource-cycle3.rs +++ b/src/test/run-pass/resource-cycle3.rs @@ -27,7 +27,7 @@ struct R { } impl Drop for R { - fn drop(&self) { + fn drop(&mut self) { unsafe { let _v2: ~int = cast::transmute(self.v.c); // let _v3: ~int = cast::transmute_copy(self.x); diff --git a/src/test/run-pass/resource-destruct.rs b/src/test/run-pass/resource-destruct.rs index 08d56a930d262..d92cfb5b9a54f 100644 --- a/src/test/run-pass/resource-destruct.rs +++ b/src/test/run-pass/resource-destruct.rs @@ -14,7 +14,7 @@ struct shrinky_pointer { #[unsafe_destructor] impl Drop for shrinky_pointer { - fn drop(&self) { + fn drop(&mut self) { error!(~"Hello!"); **(self.i) -= 1; } } diff --git a/src/test/run-pass/resource-in-struct.rs b/src/test/run-pass/resource-in-struct.rs index 5fdda9dc07909..d59f79eb2f1bd 100644 --- a/src/test/run-pass/resource-in-struct.rs +++ b/src/test/run-pass/resource-in-struct.rs @@ -20,7 +20,7 @@ struct close_res { #[unsafe_destructor] impl Drop for close_res { - fn drop(&self) { + fn drop(&mut self) { *(self.i) = false; } } diff --git a/src/test/run-pass/send-resource.rs b/src/test/run-pass/send-resource.rs index e3435fd547b18..81e2d0a8ac8ca 100644 --- a/src/test/run-pass/send-resource.rs +++ b/src/test/run-pass/send-resource.rs @@ -15,7 +15,7 @@ struct test { } impl Drop for test { - fn drop(&self) {} + fn drop(&mut 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 2fc6833242f28..f983830936a1f 100644 --- a/src/test/run-pass/struct-literal-dtor.rs +++ b/src/test/run-pass/struct-literal-dtor.rs @@ -13,7 +13,7 @@ struct foo { } impl Drop for foo { - fn drop(&self) { + fn drop(&mut self) { error!("%s", self.x); } } diff --git a/src/test/run-pass/task-killjoin-rsrc.rs b/src/test/run-pass/task-killjoin-rsrc.rs index 84b031157656f..10116e569467c 100644 --- a/src/test/run-pass/task-killjoin-rsrc.rs +++ b/src/test/run-pass/task-killjoin-rsrc.rs @@ -24,7 +24,7 @@ struct notify { #[unsafe_destructor] impl Drop for notify { - fn drop(&self) { + fn drop(&mut self) { unsafe { error!("notify: task=%? v=%x unwinding=%b b=%b", 0, diff --git a/src/test/run-pass/type-param-constraints.rs b/src/test/run-pass/type-param-constraints.rs index 4d6efc9772ce0..a1cb0063322dc 100644 --- a/src/test/run-pass/type-param-constraints.rs +++ b/src/test/run-pass/type-param-constraints.rs @@ -19,7 +19,7 @@ struct r { } impl Drop for r { - fn drop(&self) {} + fn drop(&mut 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 7b604bb7857c9..6ba3866bb6d43 100644 --- a/src/test/run-pass/unique-pinned-nocopy-2.rs +++ b/src/test/run-pass/unique-pinned-nocopy-2.rs @@ -14,7 +14,7 @@ struct r { #[unsafe_destructor] impl Drop for r { - fn drop(&self) { + fn drop(&mut self) { *(self.i) = *(self.i) + 1; } } diff --git a/src/test/run-pass/unit-like-struct-drop-run.rs b/src/test/run-pass/unit-like-struct-drop-run.rs index 41b971d64d023..b8ca66e89793a 100644 --- a/src/test/run-pass/unit-like-struct-drop-run.rs +++ b/src/test/run-pass/unit-like-struct-drop-run.rs @@ -16,7 +16,7 @@ use std::task; struct Foo; impl Drop for Foo { - fn drop(&self) { + fn drop(&mut self) { fail!("This failure should happen."); } } diff --git a/src/test/run-pass/unwind-resource.rs b/src/test/run-pass/unwind-resource.rs index bde90e3726ed3..f1d5009fe8894 100644 --- a/src/test/run-pass/unwind-resource.rs +++ b/src/test/run-pass/unwind-resource.rs @@ -20,7 +20,7 @@ struct complainer { } impl Drop for complainer { - fn drop(&self) { + fn drop(&mut self) { error!("About to send!"); self.c.send(true); error!("Sent!"); diff --git a/src/test/run-pass/unwind-resource2.rs b/src/test/run-pass/unwind-resource2.rs index 4d550d9e4b2f4..5b0cd17eea05e 100644 --- a/src/test/run-pass/unwind-resource2.rs +++ b/src/test/run-pass/unwind-resource2.rs @@ -18,7 +18,7 @@ struct complainer { #[unsafe_destructor] impl Drop for complainer { - fn drop(&self) {} + fn drop(&mut 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 85293405695e6..2a4bd2a8cf9a6 100644 --- a/src/test/run-pass/vec-slice-drop.rs +++ b/src/test/run-pass/vec-slice-drop.rs @@ -15,7 +15,7 @@ struct foo { #[unsafe_destructor] impl Drop for foo { - fn drop(&self) { + fn drop(&mut self) { *self.x += 1; } }