]> git.lizzy.rs Git - rust.git/commitdiff
switch Drop to `&mut self`
authorDaniel Micay <danielmicay@gmail.com>
Tue, 17 Sep 2013 01:18:07 +0000 (21:18 -0400)
committerDaniel Micay <danielmicay@gmail.com>
Tue, 17 Sep 2013 02:19:23 +0000 (22:19 -0400)
129 files changed:
doc/tutorial-ffi.md
doc/tutorial.md
src/libextra/arc.rs
src/libextra/arena.rs
src/libextra/c_vec.rs
src/libextra/dlist.rs
src/libextra/future.rs
src/libextra/rc.rs
src/libextra/task_pool.rs
src/libextra/workcache.rs
src/librustc/back/link.rs
src/librustc/lib/llvm.rs
src/librustc/middle/trans/base.rs
src/librustc/middle/trans/common.rs
src/librustc/middle/trans/context.rs
src/librustc/rustc.rs
src/librustc/util/common.rs
src/librustdoc/demo.rs
src/libstd/c_str.rs
src/libstd/condition.rs
src/libstd/io.rs
src/libstd/ops.rs
src/libstd/option.rs
src/libstd/os.rs
src/libstd/rt/comm.rs
src/libstd/rt/kill.rs
src/libstd/rt/local_heap.rs
src/libstd/rt/rc.rs
src/libstd/rt/sched.rs
src/libstd/rt/stack.rs
src/libstd/rt/task.rs
src/libstd/rt/thread.rs
src/libstd/rt/uv/uvio.rs
src/libstd/run.rs
src/libstd/task/spawn.rs
src/libstd/unstable/atomics.rs
src/libstd/unstable/dynamic_lib.rs
src/libstd/unstable/finally.rs
src/libstd/unstable/sync.rs
src/libstd/util.rs
src/libsyntax/parse/parser.rs
src/test/auxiliary/issue-2526.rs
src/test/auxiliary/issue-3012-1.rs
src/test/auxiliary/issue2170lib.rs
src/test/auxiliary/moves_based_on_type_lib.rs
src/test/bench/task-perf-alloc-unwind.rs
src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-1.rs
src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-2.rs
src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-3.rs
src/test/compile-fail/bind-by-move-neither-can-live-while-the-other-survives-4.rs
src/test/compile-fail/bind-by-move-no-sub-bindings.rs
src/test/compile-fail/block-must-not-have-result-res.rs
src/test/compile-fail/borrowck-borrowed-uniq-rvalue-2.rs
src/test/compile-fail/borrowck-move-out-of-struct-with-dtor.rs
src/test/compile-fail/borrowck-move-out-of-tuple-struct-with-dtor.rs
src/test/compile-fail/copy-a-resource.rs
src/test/compile-fail/disallowed-deconstructing-destructing-struct-let.rs
src/test/compile-fail/disallowed-deconstructing-destructing-struct-match.rs
src/test/compile-fail/drop-on-non-struct.rs
src/test/compile-fail/explicit-call-to-dtor.rs
src/test/compile-fail/explicit-call-to-supertrait-dtor.rs
src/test/compile-fail/functional-struct-update-noncopyable.rs
src/test/compile-fail/issue-2548.rs
src/test/compile-fail/issue-2823.rs
src/test/compile-fail/issue-3214.rs
src/test/compile-fail/kindck-destructor-owned.rs
src/test/compile-fail/no-send-res-ports.rs
src/test/compile-fail/noncopyable-class.rs
src/test/compile-fail/pinned-deep-copy.rs
src/test/compile-fail/repeat-to-run-dtor-twice.rs
src/test/compile-fail/unique-object-noncopyable.rs
src/test/compile-fail/unique-pinned-nocopy.rs
src/test/compile-fail/unique-vec-res.rs
src/test/compile-fail/use-after-move-self-based-on-type.rs
src/test/compile-fail/vec-res-add.rs
src/test/debug-info/boxed-struct.rs
src/test/debug-info/c-style-enum-in-composite.rs
src/test/debug-info/packed-struct-with-destructor.rs
src/test/debug-info/struct-with-destructor.rs
src/test/run-fail/issue-2061.rs
src/test/run-fail/morestack2.rs
src/test/run-fail/morestack3.rs
src/test/run-fail/morestack4.rs
src/test/run-fail/rt-set-exit-status-fail2.rs
src/test/run-fail/too-much-recursion-unwinding.rs
src/test/run-fail/unwind-box-res.rs
src/test/run-fail/unwind-resource-fail.rs
src/test/run-fail/unwind-resource-fail2.rs
src/test/run-fail/unwind-resource-fail3.rs
src/test/run-pass/attr-no-drop-flag-size.rs
src/test/run-pass/borrowck-unary-move-2.rs
src/test/run-pass/class-attributes-1.rs
src/test/run-pass/class-attributes-2.rs
src/test/run-pass/class-dtor.rs
src/test/run-pass/drop-trait-generic.rs
src/test/run-pass/drop-trait.rs
src/test/run-pass/init-res-into-things.rs
src/test/run-pass/issue-2487-a.rs
src/test/run-pass/issue-2708.rs
src/test/run-pass/issue-2718.rs
src/test/run-pass/issue-2735-2.rs
src/test/run-pass/issue-2735-3.rs
src/test/run-pass/issue-2895.rs
src/test/run-pass/issue-3220.rs
src/test/run-pass/issue-3563-3.rs
src/test/run-pass/issue-4252.rs
src/test/run-pass/issue-4735.rs
src/test/run-pass/issue-6341.rs
src/test/run-pass/issue-6344-let.rs
src/test/run-pass/issue-6344-match.rs
src/test/run-pass/issue-979.rs
src/test/run-pass/newtype-struct-drop-run.rs
src/test/run-pass/newtype-struct-with-dtor.rs
src/test/run-pass/option-unwrap.rs
src/test/run-pass/resource-assign-is-not-copy.rs
src/test/run-pass/resource-cycle.rs
src/test/run-pass/resource-cycle2.rs
src/test/run-pass/resource-cycle3.rs
src/test/run-pass/resource-destruct.rs
src/test/run-pass/resource-in-struct.rs
src/test/run-pass/send-resource.rs
src/test/run-pass/struct-literal-dtor.rs
src/test/run-pass/task-killjoin-rsrc.rs
src/test/run-pass/type-param-constraints.rs
src/test/run-pass/unique-pinned-nocopy-2.rs
src/test/run-pass/unit-like-struct-drop-run.rs
src/test/run-pass/unwind-resource.rs
src/test/run-pass/unwind-resource2.rs
src/test/run-pass/vec-slice-drop.rs

index e3c1c48944458190c6ac6ff6f424ecedc1862fc8..3deaeb14b83f1b389c7f1ca8d4ee13de6e154ba3 100644 (file)
@@ -321,7 +321,7 @@ impl<T: Send> Unique<T> {
 
 #[unsafe_destructor]
 impl<T: Send> Drop for Unique<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment];
         #[inline(never)];
         
index 637dbb10c23559616db7121f659a5cd804356e0d..d786bff58e1d417e60ff9e17516288991dd31073 100644 (file)
@@ -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!");
         }
index 3fbfae52c6300bf925d071a95c611447149476ec..ca8000c984d4af53005eacfd917dc45515581838 100644 (file)
@@ -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() */
index e24e747d61ab42ab3f8bf88b4913fc85fdd79125..63c8e2010b07ac24f344689dbf92e34ad67c7f01 100644 (file)
@@ -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| {
index 6ae67e7c794ef49d5f7df494c1f3a22c706a60d5..30bce3a81708cafaf940db617210c2ebe0fe7053 100644 (file)
@@ -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()
index ac296ad527ee5f973f26e5a979e8f4de1a86b2d1..da5d5d00e80cf07aaed1b16f16a1b1fa99e454a8 100644 (file)
@@ -415,14 +415,11 @@ pub fn insert_ordered(&mut self, elt: T) {
 
 #[unsafe_destructor]
 impl<T> Drop for DList<T> {
-    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 @@ fn drop(&self) {
                 }
             }
         }
-        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();
     }
 }
 
index ce56a3dcaa69b479e42277311eaee69ae75efb4a..74a551c6f6d560fb7d0b3dee859df088bf307108 100644 (file)
@@ -43,7 +43,7 @@ pub struct Future<A> {
 // over ~fn's that have pipes and so forth within!
 #[unsafe_destructor]
 impl<A> Drop for Future<A> {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 enum FutureState<A> {
index 86fbbd4c3cc597f62e4978a9e26904cd295d7b65..fa7cd9025eb7ce2bd65f1acc6945e7dfcff5ebc2 100644 (file)
@@ -73,7 +73,7 @@ pub fn borrow<'r>(&'r self) -> &'r T {
 
 #[unsafe_destructor]
 impl<T> Drop for Rc<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         unsafe {
             if self.ptr.is_not_null() {
                 (*self.ptr).count -= 1;
@@ -218,7 +218,7 @@ pub fn with_mut_borrow<U>(&self, f: &fn(&mut T) -> U) -> U {
 
 #[unsafe_destructor]
 impl<T> Drop for RcMut<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         unsafe {
             if self.ptr.is_not_null() {
                 (*self.ptr).count -= 1;
index f1bf9e81c7251238224989d37622efa4afe6770f..46244c15a832eb2a1d472cce72c8783db2f48620 100644 (file)
@@ -34,7 +34,7 @@ pub struct TaskPool<T> {
 
 #[unsafe_destructor]
 impl<T> Drop for TaskPool<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         for channel in self.channels.iter() {
             channel.send(Quit);
         }
index 2b2ecb79294c456b68782631c28b498cd4efe573..4d3b5ae035edcf8d4a18ed5569d8936a3c878f1f 100644 (file)
@@ -201,7 +201,7 @@ fn load(&mut self) {
 // 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();
         }
index 18a7e65a6dd7af2f5d2bf1e950a098b6c61963c7..1fbbc1db05a6ddc838c6ca85b15b318828cc896b 100644 (file)
@@ -105,7 +105,7 @@ pub trait Engine {}
     impl Engine for LLVMJITData {}
 
     impl Drop for LLVMJITData {
-        fn drop(&self) {
+        fn drop(&mut self) {
             unsafe {
                 llvm::LLVMDisposeExecutionEngine(self.ee);
                 llvm::LLVMContextDispose(self.llcx);
index beadcf3a19df8282bb06091ddf4f56c730703dab..49798288d40d0820b4343e4911b787be5176ab33 100644 (file)
@@ -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);
         }
index f0238e8f5c5501ee25fb5b9efba97ec386393c21..275801bc0c118a4f08e6c795bcfa0b4a2f03e768 100644 (file)
@@ -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 @@ pub fn new(ccx: @mut CrateContext,
 
 #[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;
index b75b06f42b64986fec003a549512b26b1a65d976..b659a93f5f099d148c7715214a3519b627159041 100644 (file)
@@ -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);
         }
index 6eb2fcf25fd3c289ff9113aa4c877ccd16099668..506e427ce410abb9b2a7f62631c2579f762aa291 100644 (file)
@@ -273,7 +273,7 @@ pub fn offsetof_gep(&self,
 
 #[unsafe_destructor]
 impl Drop for CrateContext {
-    fn drop(&self) {
+    fn drop(&mut self) {
         unset_task_llcx();
     }
 }
index adf11a9fa21205e8a934022cf193d247bed09a8e..bca2ceb2f84a0505d224a574c69dfa8af4ab7910 100644 (file)
@@ -342,7 +342,7 @@ struct finally {
         }
 
         impl Drop for finally {
-            fn drop(&self) { self.ch.send(done); }
+            fn drop(&mut self) { self.ch.send(done); }
         }
 
         let _finally = finally { ch: ch };
index eb9206a52b1257e9937efaa644f3928a5d4b0cac..46620319a8212742da584b09314fd36e2c2a392a 100644 (file)
@@ -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 {
index 3393133bc186603acdc5042935abc62521cb62ba..23c55488332ad77e277188b52d46d4c73fac4a2e 100644 (file)
@@ -127,7 +127,7 @@ struct Bored {
 }
 
 impl Drop for Bored {
-  fn drop(&self) { }
+  fn drop(&mut self) { }
 }
 
 /**
index a2842efbf8a04dbeabd32582fdc131f4ed4fd071..75598b300a37137ba80041c0f2933d4da0ec9f99 100644 (file)
@@ -127,7 +127,7 @@ pub fn iter<'a>(&'a self) -> CStringIterator<'a> {
 }
 
 impl Drop for CString {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
         if self.owns_buffer_ {
             unsafe {
index 9cd2ad79d18902c64a2d6029be937c54a53ae1d4..954b8bd73300c5ede29899095ad86b85a015fb84 100644 (file)
@@ -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 {
index 2ca36de4f49cce83a79c69e1736c49027abfca25..890a53690d96a8574d55355b38ca945fc90b913b 100644 (file)
@@ -1021,7 +1021,7 @@ pub fn new(f: *libc::FILE) -> FILERes {
 }
 
 impl Drop for FILERes {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
 
         unsafe {
@@ -1302,7 +1302,7 @@ pub fn new(fd: fd_t) -> FdRes {
 }
 
 impl Drop for FdRes {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
 
         unsafe {
@@ -1832,7 +1832,7 @@ pub fn new(arg: Arg<t>) -> Res<t> {
 
     #[unsafe_destructor]
     impl<T> Drop for Res<T> {
-        fn drop(&self) {
+        fn drop(&mut self) {
             match self.arg.opt_level {
                 None => (),
                 Some(level) => {
index 756b4a10d3c9042ed7aa576b50edad859e515fce..1d4d827434b96518ba0e4de58eb311ae3afd401d 100644 (file)
@@ -14,7 +14,7 @@
 
 #[lang="drop"]
 pub trait Drop {
-    fn drop(&self);
+    fn drop(&mut self);
 }
 
 #[lang="add"]
@@ -95,7 +95,7 @@ struct HasDtor {
     }
 
     impl Drop for HasDtor {
-        fn drop(&self) {
+        fn drop(&mut self) {
         }
     }
 
@@ -105,4 +105,4 @@ fn alloc_obj_with_dtor(bh: &mut BenchHarness) {
             HasDtor { x : 10 };
         }
     }
-}
\ No newline at end of file
+}
index ce725257dfff03a4fefba00aa2df45b5172d15d5..9b6d0a77cd83b6945abd8d150d2ab3baa3e0b3ef 100644 (file)
@@ -573,7 +573,7 @@ struct R {
 
         #[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 {
index c45f2af8f7ec792cd74897ae1a7026eb39e61b4f..6fe6a1e47e915570802830dc2b2c0fa7d8c2f460 100644 (file)
@@ -1481,7 +1481,7 @@ pub fn granularity() -> uint {
 
 #[cfg(unix)]
 impl Drop for MemoryMap {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
 
         unsafe {
@@ -1607,7 +1607,7 @@ pub fn granularity() -> uint {
 
 #[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};
index 4f5f26513b4c6fcf558cd52ab22bbac382a7f2d3..a8cd9bd66d7de36a0536324f6d91e75fcb2ec96b 100644 (file)
@@ -363,7 +363,7 @@ fn peek(&self) -> bool {
 
 #[unsafe_destructor]
 impl<T> Drop for ChanOne<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         if self.suppress_finalize { return }
 
         unsafe {
@@ -391,7 +391,7 @@ fn drop(&self) {
 
 #[unsafe_destructor]
 impl<T> Drop for PortOne<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         if self.suppress_finalize { return }
 
         unsafe {
index e6003fb1a4449d77f9be472a3984101900be7630..92dc62490ed1b1479bb46093cce62898c9501ea2 100644 (file)
@@ -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 @@ pub fn assert_may_sleep(&self) {
 }
 
 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);
index 12ec19a1ecc67af345c332a072da5055da186c87..9d0a0e0ac25d122d2333d171974b6d3dc984af61 100644 (file)
@@ -78,7 +78,7 @@ pub fn free(&mut self, box: *OpaqueBox) {
 
 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);
index 18a5dd4a1145d1fc287665d8aa98380134a7097d..0a6890f627bbb127aa87b3b41d20a4b4c7790229 100644 (file)
@@ -74,7 +74,7 @@ pub fn refcount(&self) -> uint {
 
 #[unsafe_destructor]
 impl<T> Drop for RC<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         assert!(self.refcount() > 0);
 
         unsafe {
index bcf9ae4a2a8410037d2f0e80ec48e8e4b62c3dba..854fdadfb00d24c9e2bafba96ac04fc56117bb51 100644 (file)
@@ -1200,15 +1200,15 @@ fn start_closure_dtor() {
             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;
             }
         }
     }
index da70659acec2edfe577607b7a54b1fa1152cad27..fddee5882b9acf6c8dcdf8da54574ce52fde7c03 100644 (file)
@@ -53,7 +53,7 @@ pub fn end(&self) -> *uint {
 }
 
 impl Drop for StackSegment {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
 
         unsafe {
index da81aab0f7849eb6bfd5742629af46168b383219..09f5ee7febb3ecc19bc777a0cb60e57909fb581f 100644 (file)
@@ -328,7 +328,7 @@ pub fn on_appropriate_sched() -> bool {
 }
 
 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)
     }
index 61db08f4813ef5da516cd1d8ecc335cb43fc9a3d..8b64fda21364a2ca9a40fef1b22bb1bbf858399a 100644 (file)
@@ -46,7 +46,7 @@ pub fn join(self) {
 }
 
 impl Drop for Thread {
-    fn drop(&self) {
+    fn drop(&mut self) {
         #[fixed_stack_segment]; #[inline(never)];
 
         assert!(self.joined);
index b930ea2437ea86aa4eeb5186d19c056e6a560d5a..f3b97441e8e2596aee4b625a4c15d031441d4458 100644 (file)
@@ -187,7 +187,7 @@ pub fn new() -> 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 @@ fn fire(&mut self) { self.async.send() }
 }
 
 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 @@ fn new(watcher: TcpWatcher, home: SchedHandle) -> 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 @@ fn home<'r>(&'r mut self) -> &'r mut SchedHandle { &mut self.home }
 }
 
 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 @@ fn home<'r>(&'r mut self) -> &'r mut SchedHandle { &mut self.home }
 }
 
 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 @@ fn new(w: timer::TimerWatcher, home: SchedHandle) -> 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 @@ fn seek_common(&mut self, pos: i64, whence: c_int) ->
 }
 
 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| {
index 0fe9236253d2ebca0e32da402973ec8b37566cad..83646dc59b35ef508aca0955bed5e5aa3e1a2b02 100644 (file)
@@ -436,12 +436,9 @@ fn killpid(pid: pid_t, force: bool) {
 }
 
 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);
     }
 }
index c3a3dc56ce2330de23a04374d359a7de753b0148..58cea8d7d0ecb3b03fbe1f72bd772dd9ae3e68bb 100644 (file)
@@ -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);
     }
index f9380e7ad1241fd2f6bf7c3bc9c99d51218a2e9b..a32b52db1cc0aaaa8889a480eab2c53d7ba36a87 100644 (file)
@@ -338,7 +338,7 @@ pub fn is_empty(&mut self, order: Ordering) -> bool {
 
 #[unsafe_destructor]
 impl<T> Drop for AtomicOption<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         // This will ensure that the contained data is
         // destroyed, unless it's null.
         unsafe {
index d8a07eeb8b7d3d1ff7b15179b04336624d67d12d..4c92d9c2e362c5272edbaf4e3e2bb399db614140 100644 (file)
@@ -26,7 +26,7 @@
 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)
index 42820aaaa959d562e33b88a1b897b1c1e792ef26..6833ca6d7cfef6f2ee086ff3d54a90896332a14a 100644 (file)
@@ -64,7 +64,7 @@ struct Finallyalizer<'self> {
 
 #[unsafe_destructor]
 impl<'self> Drop for Finallyalizer<'self> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         (self.dtor)();
     }
 }
index 26313323291e5e8d4bef786dec5d989cc6942971..1dafeb27a0e32afcaabef5bf7f247b0f7d9f4eed 100644 (file)
@@ -220,7 +220,7 @@ fn clone(&self) -> UnsafeArc<T> {
 
 #[unsafe_destructor]
 impl<T> Drop for UnsafeArc<T>{
-    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);
         }
index 5085f337d4bba216103ddf9f17c1505dca509123..e8bcceb85fa689ed9574281cab1e752722f0c45b 100644 (file)
@@ -88,7 +88,7 @@ pub fn new() -> NonCopyable { NonCopyable }
 }
 
 impl Drop for NonCopyable {
-    fn drop(&self) { }
+    fn drop(&mut self) { }
 }
 
 /// A type with no inhabitants
@@ -188,7 +188,7 @@ fn test_noncopyable() {
         struct Foo { five: int }
 
         impl Drop for Foo {
-            fn drop(&self) {
+            fn drop(&mut self) {
                 assert_eq!(self.five, 5);
                 unsafe {
                     did_run = true;
index f05452bb6c504d584ece8c54484ecf5e0fa80940..4aad5c24d0f3d8e07e3355f38bd32d4908d844a1 100644 (file)
@@ -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 {
index cbdd6b56b7da49564b4da1c1f3680e2ccaa44570..8ed65628f54f9277ef5d90fee629b5aa9033ca36 100644 (file)
@@ -21,7 +21,7 @@ struct arc_destruct<T> {
 
 #[unsafe_destructor]
 impl<T:Freeze> Drop for arc_destruct<T> {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn arc_destruct<T:Freeze>(data: int) -> arc_destruct<T> {
@@ -43,7 +43,7 @@ struct context_res {
 }
 
 impl Drop for context_res {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn context_res() -> context_res {
index 9c9b3d9f243404ed95d6c538316a553a7269546e..f9bbfa7ecce07ede44f88770e50ec79f029a9e89 100644 (file)
@@ -19,7 +19,7 @@ pub struct socket_handle {
     }
 
     impl Drop for socket_handle {
-        fn drop(&self) {
+        fn drop(&mut self) {
             /* c::close(self.sockfd); */
         }
     }
index ec5d8baf25900a4d13d6108f4095ce881db2203c..b311ee35674672fe5f22f323ddf98a5c0b2bed7a 100644 (file)
@@ -16,7 +16,7 @@ pub struct rsrc {
 }
 
 impl Drop for rsrc {
-    fn drop(&self) {
+    fn drop(&mut self) {
         foo(self.x);
     }
 }
index f45b80715953ef847c24208f00c2873c5f673c16..fe403a56a4be6524f9ad3bce538560f8f19091f7 100644 (file)
@@ -15,7 +15,7 @@ pub struct S {
 }
 
 impl Drop for S {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("goodbye");
     }
 }
index 9718a12c83f13e373fbe01de716703d9360e071c..f383f7a101fcca9cb8d0a35ada3c35124828889a 100644 (file)
@@ -58,7 +58,7 @@ struct r {
 
 #[unsafe_destructor]
 impl Drop for r {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn r(l: @nillist) -> r {
index 6353d7c6581b175ebfc2f3321777c983acc76c50..3d1cca46085dbf06f8d9f95a890360b85d309391 100644 (file)
@@ -11,7 +11,7 @@
 struct X { x: () }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("destructor runs");
     }
 }
index 6ea5f85797f188c79b053520486c69caa8d0e6e4..a1803a621a53fc2996f4ddea13508ddcc58a5d0d 100644 (file)
@@ -11,7 +11,7 @@
 struct X { x: (), }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("destructor runs");
     }
 }
index 8f0642896f1e2ed9ecb1ac90e853f4c2453967c9..34a9c0b8fc26d01fdcdbcc6ead782b013377ef62 100644 (file)
@@ -11,7 +11,7 @@
 struct X { x: (), }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("destructor runs");
     }
 }
index 859bf7bd26d9cbd3002c463387e9c3c05bd2c289..2aa3379993b7abaf195f247baa57c9707d592a04 100644 (file)
@@ -11,7 +11,7 @@
 struct X { x: (), }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("destructor runs");
     }
 }
index a1243dd01d9f7e8c26323d35e7c91103ad9871c1..7143ce0252b733c4b5683f3d2453fe753d16a317 100644 (file)
@@ -11,7 +11,7 @@
 struct X { x: (), }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("destructor runs");
     }
 }
index c9b627f55f80362a08c65f8c4262fa2960a21bf5..df42244fd0fc8cfc669210999594c309f2f577e4 100644 (file)
@@ -13,7 +13,7 @@
 struct r;
 
 impl Drop for r {
-    fn drop(&self) {
+    fn drop(&mut self) {
         true
     }
 }
index 98099360f3c71f404c06c39cb0fc27f42aa9e8a1..1c725a0dd0e036ba6f6e6823c90ded1e54f5da89 100644 (file)
@@ -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);
         }
index 4407329f49775876f027132e63bfc287da426620..ade9ce9568f958a5b758c6a8abefcd3576cac1c8 100644 (file)
@@ -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() {
index 400a4f07951fc120480feb44822f252465edb123..1a0fc9e3b3b4d7eb6c4d8136c01c42a40cc915a2 100644 (file)
@@ -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() {
index a90b04b79adc19c10621b040f9bc9d16c36346c7..c5f5861de825d778395d9a6d85b9f090af2edb4d 100644 (file)
@@ -13,7 +13,7 @@ struct foo {
 }
 
 impl Drop for foo {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn foo(i:int) -> foo {
index 4652aa0d3f12518c43d938dcdeceb5bfeda929ff..2a4d46941b9771312b1f37dd2f60821d4573c7b1 100644 (file)
@@ -13,7 +13,7 @@ struct X {
 }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("value: %s", self.x);
     }
 }
index 748114a4f12f6f99b3c35bda8b1e9237f325bd32..ecb02c4307d3e1427a14952577eb827e5e755118 100644 (file)
@@ -13,7 +13,7 @@ struct X {
 }
 
 impl Drop for X {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("value: %s", self.x);
     }
 }
index 2eb58d49612318859552fb38566831f6c24f0c51..e65d5966b277a7541df0c0dc3bb03ecb75d5ef3f 100644 (file)
@@ -12,7 +12,7 @@
 
 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");
     }
 }
index 5ffc9ea08eda7b48f93322045dff27c621109fb7..4a34f9c42be4032f04654e8ce33a3568903fc69a 100644 (file)
@@ -13,7 +13,7 @@ struct Foo {
 }
 
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("kaboom");
     }
 }
index ace31183d76a0a1f14d31a3a68ba460c55359075..2a5c260910b6f25b9cc32d445584af97a6f1771c 100644 (file)
@@ -17,7 +17,7 @@ trait Bar : Drop {
 }
 
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("kaboom");
     }
 }
index dd881790ba880430aabc75495fe9e93da0e6b9c2..02db789519596d6bdad7fa0731d5d470b353157c 100644 (file)
@@ -17,7 +17,7 @@
 struct A { y: Arc<int>, x: Arc<int> }
 
 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) };
index cb0b8afbf8ba4454f4bf688c4d6468e675145b20..5822b35c74ec64e3b1e5d5357294531a8b1bc693 100644 (file)
@@ -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;
index 95cb5c6475c187bd75b30c4e1fb0d2044d36de25..bf00dc139d0f594ce248cfc4af7b74024a27be48 100644 (file)
@@ -13,7 +13,7 @@ struct C {
 }
 
 impl Drop for C {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("dropping: %?", self.x);
     }
 }
index 8eb110e6ce9b33282605e97d2848e9bb4a2fdc7e..5be0a1e708babe6a4a6976e9087206b78595a6dc 100644 (file)
@@ -15,7 +15,7 @@ struct foo {
     }
 
     impl<T> Drop for foo<T> {
-        fn drop(&self) {}
+        fn drop(&mut self) {}
     }
 }
 fn main() { }
index 07adc3d81e5f3a8a8324bf9d36d0814ef6c139c7..7ab7aeea85cadb86cc2f0001edd306bb16ed7ed5 100644 (file)
@@ -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;
     }
 }
index 5f0d4bc60ac01b41db7bb5e7fafa29965ba588d8..e7b897ad9068383d6d0393235eda562ae8cb6348 100644 (file)
@@ -20,7 +20,7 @@ struct foo {
 
     #[unsafe_destructor]
     impl Drop for foo {
-        fn drop(&self) {}
+        fn drop(&mut self) {}
     }
 
     fn foo(x: Port<()>) -> foo {
index e64d5b67ab76893678ff75fe959f09febc5f0649..9d057998c790d73579736569725f2e199d71e388 100644 (file)
@@ -15,7 +15,7 @@ struct bar {
 }
 
 impl Drop for bar {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn bar(x:int) -> bar {
index ccbe265000df28186ceaa6e64d3dbeddc816b04b..822c6812116346fa4ae6e27d112d785af71ef915 100644 (file)
@@ -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;
         }
index c997ce2a2815280a3e65f2d654627fb13adb8300..ab3f8496eaf26352446158e06ab43a841a571b23 100644 (file)
@@ -17,7 +17,7 @@ struct Foo {
 }
 
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("Goodbye!");
     }
 }
index ace0f516eef03b5cfbedfe8e9893c3522f885f77..a9a7966ebeb9858eb5cff2debfaf6b6f75d9e874 100644 (file)
@@ -17,7 +17,7 @@ struct Bar {
 }
 
 impl Drop for Bar {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 impl Foo for Bar {
index 0218899bf2ed5a99efde3d4dc43b5d7e13386c6a..50bb074fc7ac7f09cbffb441a2e10a6ed7d19e7b 100644 (file)
@@ -13,7 +13,7 @@ struct r {
 }
 
 impl Drop for r {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn main() {
index bee36ea8293457f956de275bee85c56d03997c39..0fcbc847850bebe7b640e6250516a57f6bc56f56 100644 (file)
@@ -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;
         }
index 0622c028c631bb116bcbe6bc36104b2f75973780..5440e1e2728c5991857664331afe7b75a003c31f 100644 (file)
@@ -3,7 +3,7 @@ struct S {
 }
 
 impl Drop for S {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 impl S {
index 2d59e490e0d7b21140dd38952cee9fb96c1f1df7..e7441a2c9681800e59747f79b3e856ca19b93806 100644 (file)
@@ -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() {
index e996b249d369ee434dde633dc902264120579ee9..47c9bd469d4098685fa4c6f35683eacfa822c6ea 100644 (file)
@@ -42,7 +42,7 @@ struct StructWithDestructor {
 }
 
 impl Drop for StructWithDestructor {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn main() {
index d3e27c85b745af044589d162c3551803dcf0c65d..a21c98b9d1b82a6d6bee165cdf10088333417d67 100644 (file)
@@ -78,7 +78,7 @@ struct StructWithDrop {
 }
 
 impl Drop for StructWithDrop {
-    fn drop(&self) {()}
+    fn drop(&mut self) {()}
 }
 
 fn main() {
index 47e4a26ab4ba29d892c518161256aba0a9263155..f684a60b68805c05a815e8bbdd4325ba0214e142 100644 (file)
@@ -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 {
index 8994a582b58fc7cabd337939d60a6037e1a1aac7..18c5994fe2a8c6d1cde26c985f5737c569256e8c 100644 (file)
@@ -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 {
index 3e78fd1f7db5bb9544cd3311acab6ec4472e4323..451105b0c529e5ed93df0888a4aacc98ffef2cd2 100644 (file)
@@ -15,7 +15,7 @@ struct R {
 }
 
 impl Drop for R {
-    fn drop(&self) {
+    fn drop(&mut self) {
         let _y = R { b: self.b };
     }
 }
index bf03695855e4a51f16a092f61495d6c84e1a10b5..5ac3092640038ae3f4d78a85c81ac2d87041fee3 100644 (file)
@@ -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);
index 4a8586fd19f35e107e6729ca333c0cad2138a95e..e6f219710b37bc0b5a43089c3ef224b3aebe0f8f 100644 (file)
@@ -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);
index b6fe25bc7a2ed1e8fac1be8368462cf1c3f8b4ee..02a65e91d04456e0890d25a7f2f08f6bd3bcb0cd 100644 (file)
@@ -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 {
index d78dedfa39dc011f32096cde33f863eaaf02ccf9..01f745850906eb1f9391ff8e9774363e7bb535af 100644 (file)
@@ -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);
     }
 }
index 04dea449172da60bce8f612e062c3f2d88befe67..62d25915431a92127461349178b70e3bcd36c620 100644 (file)
@@ -24,7 +24,7 @@ struct r {
 }
 
 impl Drop for r {
-    fn drop(&self) {
+    fn drop(&mut self) {
         unsafe {
             if !*(self.recursed) {
                 *(self.recursed) = true;
index 7f022d5761c238c3f9e16796d34cabb00d04cc09..c8a3e77a18c46f09d3d27a46ed09417e420083c1 100644 (file)
@@ -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);
         }
index d695caf7b5f974c7e85b55f8e6ba26d9cdb2c2be..6526455b8e2e073a6694271d4feb6bed9b7b48cf 100644 (file)
@@ -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 } }
index 6ebb4a742c43c8aeea7fabb793f7b780ec8704ac..67e1d0e8f92ac5752c85bb6bb781cdad20e00838 100644 (file)
@@ -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 } }
index 2de9d4cec77efe3eca0d0422a283849f7b9cbe06..231f6e7b7d579f840b46561821611aff1d08f362 100644 (file)
@@ -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");
     }
 }
index 87c476d781e7eb409b93d12cc7a93402d7caf004..e5470a1cff472ae28c77024a2a903f069f077582 100644 (file)
@@ -17,7 +17,7 @@ struct Test<T> {
 
 #[unsafe_destructor]
 impl<T> Drop for Test<T> {
-    fn drop(&self) { }
+    fn drop(&mut self) { }
 }
 
 fn main() {
index c52371de54af05f7342c33ec08a23f8d4cfe926b..2ab0f4262fb5c9d8d0e1ad011f85448c88386788 100644 (file)
@@ -13,7 +13,7 @@ struct noncopyable {
 }
 
 impl Drop for noncopyable {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("dropped");
     }
 }
index 108ae023e12ab76ce2097c8da17f4f38d43dc82a..2165f73c3bf4ce3da2595532635a1992c279111d 100644 (file)
@@ -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); }
 }
 
 
index 02279677276f2e7d4674702b3d6ac19f10e41df8..30cafff0388c57cd822141ade391be12429f8ab5 100644 (file)
@@ -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);
     }
 }
index c294670faa3d9591f605b283eee9f5921bcb429f..8ee382eaa38f949435cd99ce8b57a21a85c96acc 100644 (file)
@@ -14,7 +14,7 @@ struct cat {
 }
 
 impl Drop for cat {
-    fn drop(&self) {
+    fn drop(&mut self) {
         (self.done)(self.meows);
     }
 }
index cb5a5294acf92d9cf0dc876f33a8b67de09247b3..39453af83c3815013eaeac873eb97759c9481687 100644 (file)
@@ -14,7 +14,7 @@ struct S<T> {
 
 #[unsafe_destructor]
 impl<T> ::std::ops::Drop for S<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("bye");
     }
 }
index 35d59770d12e81e6bd8a18aee697d005e97a5af6..e36379295c419e2f4b103596b418fd115884aa91 100644 (file)
@@ -13,7 +13,7 @@ struct Foo {
 }
 
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         println("bye");
     }
 }
index 0b5e58526f6343e576dd6a9364cc5462c8d67059..fb6204866dfdf6612ec59e2589646c219b3d17f1 100644 (file)
@@ -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;
     }
 }
index 0f9f1102aeac7aa74116e419a60262102610788c..c12325e6ff52ebec38f9b43e211e8f99d5cd11a6 100644 (file)
@@ -14,7 +14,7 @@ struct socket {
 }
 
 impl Drop for socket {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 impl socket {
index 44ace16fb95ea5d62d23331f98800db0042efee1..1fce8e5ce4996692dc012946e62c863657c984c6 100644 (file)
@@ -16,7 +16,7 @@ struct Font {
 }
 
 impl Drop for Font {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn Font() -> Font {
index edfae096407b6f77d7e1da4bc5ccdd13feb515f9..19f0843efd82c81d85742672bdc3862238e88172 100644 (file)
@@ -161,7 +161,7 @@ pub struct send_packet<T> {
 
     #[unsafe_destructor]
     impl<T:Send> Drop for send_packet<T> {
-        fn drop(&self) {
+        fn drop(&mut self) {
             unsafe {
                 if self.p != None {
                     let self_p: &mut Option<*packet<T>> =
@@ -191,7 +191,7 @@ pub struct recv_packet<T> {
 
     #[unsafe_destructor]
     impl<T:Send> Drop for recv_packet<T> {
-        fn drop(&self) {
+        fn drop(&mut self) {
             unsafe {
                 if self.p != None {
                     let self_p: &mut Option<*packet<T>> =
index b44d50921a5ea4b55076a3f8f9d426b313c019c2..3be634c1e58f8007d2b3d8453a17c67fa062996b 100644 (file)
@@ -15,7 +15,7 @@ struct defer {
 
 #[unsafe_destructor]
 impl Drop for defer {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *self.b = true;
     }
 }
index 902b2f69d614a1f4f3dd04b03ad0a87b4af3d8d8..8999ffd5f7f09df325e38ad349647784c08ce6a4 100644 (file)
@@ -15,7 +15,7 @@ struct defer {
 
 #[unsafe_destructor]
 impl Drop for defer {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *self.b = true;
     }
 }
index a80a079b69514071568bca13b9bfb5219a9408b7..f325756d3687651261bfa18245797e54041636a0 100644 (file)
@@ -19,7 +19,7 @@ struct Kitty {
 }
 
 impl Drop for Kitty {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 #[cfg(target_arch = "x86_64")]
index dce6d8f0bf1048fceac61d174f7cda304864456d..9c44a7cfcc3073f50044d038aa353ab6d937fa7c 100644 (file)
@@ -11,7 +11,7 @@
 struct thing { x: int, }
 
 impl Drop for thing {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn thing() -> thing {
index 3c4c4889ba2f81c6a6f1c100a7ad405797dea275..9040d5b5fb5f98ee11136d4b5677590c66ce7d03 100644 (file)
@@ -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.
index de1f630a245b876a92dcc12976904a196fc60d95..121757fb5904655bac08600cbb7f36c1f4982f3e 100644 (file)
@@ -26,7 +26,7 @@ fn call(&self) {
 }
 
 impl<T: X> Drop for Z<T> {
-    fn drop(&self) {
+    fn drop(&mut self) {
         self.x.call(); // Adding this statement causes an ICE.
     }
 }
index c1ea98283b15cd678a22d5794eafdc78b2cea67c..8451d281aa0abae1df328c95e480effd795a49b9 100644 (file)
@@ -15,7 +15,7 @@
 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) };
     }
index 29fc0744305849a27c29572ef80f0cc6dc21f849..f57482b67e049bc1b321d588d830f40ddc91d111 100644 (file)
@@ -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
index 5cda0690029810c1c3826942df09b317191459a7..6e0b6101d37484b004388cc392a9191a51ad1a8f 100644 (file)
@@ -10,7 +10,7 @@
 struct A { x: uint }
 
 impl Drop for A {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn main() {
index 4b1d274c40df9af68bc439843479be239b3b907d..b9429fc63fd28e5ebf32c7b72e2d73a35a420c4a 100644 (file)
@@ -10,7 +10,7 @@
 struct A { x: uint }
 
 impl Drop for A {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn main() {
index a68aaeb38a2972281a705f933cbcb8870f0c7672..4c4f19d51664e556a3b5272d3ddef47305530e77 100644 (file)
@@ -14,7 +14,7 @@ struct r {
 
 #[unsafe_destructor]
 impl Drop for r {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *(self.b) += 1;
     }
 }
index b917bf0810b2d6da4dcadd5d9a673ae87e76f5a4..578f80f1ca51edd0d02bb58e67ca0a6bd4e28323 100644 (file)
@@ -14,7 +14,7 @@
 
 #[unsafe_destructor]
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         ***self = 23;
     }
 }
index b58c8738295da925923dba8c2c9c40ce5cacae97..37b9b5fe068379e8963708895017a2ae5ad3eec1 100644 (file)
@@ -5,7 +5,7 @@
 
 impl Drop for Fd {
     #[fixed_stack_segment] #[inline(never)]
-    fn drop(&self) {
+    fn drop(&mut self) {
         unsafe {
             libc::close(**self);
         }
index a469e4b86ebcd27c8a76143aac9f5ebd526ca27a..66cd7f2b55f7499e5ee58e6152fef537e3ac638e 100644 (file)
@@ -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;
     }
index 0f6aaeb3861d4385f9a9e0faa30d10943f4e5ac3..dd5450de62fdb4280d49af78bc9a99bb7bebdef9 100644 (file)
@@ -14,7 +14,7 @@ struct r {
 
 #[unsafe_destructor]
 impl Drop for r {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *(self.i) += 1;
     }
 }
index db73aac2eae4e1c2e6cef315f501a9630aae7041..a5354fd01cd83083703788805a383d2085b671c1 100644 (file)
@@ -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);
index 0cfd3a93e53506a1ed6df0a914d61d8462532033..45ee6ce802149d0662857497331b4dfcda42b84e 100644 (file)
@@ -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);
         }
index 1e0d8447aeb5521b5473b4e6c2b1766d288c4145..0435f0bdcfd8b00cfce8cb8303efb498a569e227 100644 (file)
@@ -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);
index 08d56a930d26238697f1ffafa6182a0d0e7469fd..d92cfb5b9a54fd64034d2200b6540f3b29c69f79 100644 (file)
@@ -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;
     }
 }
index 5fdda9dc0790900cfffb72fbb6666a41010befe0..d59f79eb2f1bda671e0d2341c041ce3f0202a018 100644 (file)
@@ -20,7 +20,7 @@ struct close_res {
 
 #[unsafe_destructor]
 impl Drop for close_res {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *(self.i) = false;
     }
 }
index e3435fd547b189f7eb48521b7ca8759405ae99e2..81e2d0a8ac8ca834e8dc6ec694c3b5ed8942fc61 100644 (file)
@@ -15,7 +15,7 @@ struct test {
 }
 
 impl Drop for test {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn test(f: int) -> test {
index 2fc6833242f28cdbb992c881ab9a2793074757a2..f983830936a1f482b37807c4c26abfa0c9d140f1 100644 (file)
@@ -13,7 +13,7 @@ struct foo {
 }
 
 impl Drop for foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         error!("%s", self.x);
     }
 }
index 84b031157656f0ddd5aadba7765a1f1c7e94e247..10116e569467cc344e65ea7a5e7401ea5dcaf1ce 100644 (file)
@@ -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,
index 4d6efc9772ce096a49b10ce0586863fd5b29b794..a1cb0063322dc601760e685fedbca6d298a00c7b 100644 (file)
@@ -19,7 +19,7 @@ struct r {
 }
 
 impl Drop for r {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn r(i:int) -> r {
index 7b604bb7857c9455fd97a75427209f2874dbb96a..6ba3866bb6d43c9b9ffe1bf3d998b32a7c3a54b2 100644 (file)
@@ -14,7 +14,7 @@ struct r {
 
 #[unsafe_destructor]
 impl Drop for r {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *(self.i) = *(self.i) + 1;
     }
 }
index 41b971d64d023089ff76f66057955901bb508bb7..b8ca66e89793a15c379c329b85a5fc285a06ffea 100644 (file)
@@ -16,7 +16,7 @@
 struct Foo;
 
 impl Drop for Foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         fail!("This failure should happen.");
     }
 }
index bde90e3726ed3d7fdc45bcbf4d3fdf96cbbaf30a..f1d5009fe88944f78819c8fd4c6a006fad78f310 100644 (file)
@@ -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!");
index 4d550d9e4b2f49505eddb6f20b2be2e28e937899..5b0cd17eea05eca5e735173399d79ebf51f4940a 100644 (file)
@@ -18,7 +18,7 @@ struct complainer {
 
 #[unsafe_destructor]
 impl Drop for complainer {
-    fn drop(&self) {}
+    fn drop(&mut self) {}
 }
 
 fn complainer(c: @int) -> complainer {
index 85293405695e6a14570227dd8380b469005836c5..2a4bd2a8cf9a615848e41c0d943797cb679f8f1b 100644 (file)
@@ -15,7 +15,7 @@ struct foo {
 
 #[unsafe_destructor]
 impl Drop for foo {
-    fn drop(&self) {
+    fn drop(&mut self) {
         *self.x += 1;
     }
 }