about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthijs Hofstra <thiezz@gmail.com>2013-03-28 17:21:50 +0100
committerMatthijs Hofstra <thiezz@gmail.com>2013-04-02 20:47:29 +0200
commitca52d08c4b62a8e501387d305eea1ccccaeb3984 (patch)
tree579bae27ae57000dcdc64f3761bf9adfdf95ce8a
parent00dbbd01c2aee72982b3e0f9511ae1d4428c3ba9 (diff)
downloadrust-ca52d08c4b62a8e501387d305eea1ccccaeb3984.tar.gz
rust-ca52d08c4b62a8e501387d305eea1ccccaeb3984.zip
Removed mut-fields from Mut, removed borrow_const from Mut
-rw-r--r--src/libcore/mutable.rs77
1 files changed, 7 insertions, 70 deletions
diff --git a/src/libcore/mutable.rs b/src/libcore/mutable.rs
index e9639820e83..39d184b951a 100644
--- a/src/libcore/mutable.rs
+++ b/src/libcore/mutable.rs
@@ -20,13 +20,13 @@ mutation when the data structure should be immutable.
 */
 
 use util::with;
-use cast::transmute_immut;
+use cast::{transmute_mut,transmute_immut};
 
 enum Mode { ReadOnly, Mutable, Immutable }
 
 struct Data<T> {
-    priv mut value: T,
-    priv mut mode: Mode
+    priv value: T,
+    priv mode: Mode
 }
 
 pub type Mut<T> = Data<T>;
@@ -50,23 +50,19 @@ pub impl<T> Data<T> {
             ReadOnly | Mutable => {}
         }
 
-        do with(&mut self.mode, Mutable) {
-            op(&mut self.value)
+        do with( unsafe { transmute_mut(&self.mode) }, Mutable) {
+            op(  unsafe { transmute_mut(&self.value) })
         }
     }
 
-    fn borrow_const<R>(&self, op: &fn(t: &const T) -> R) -> R {
-        op(&const self.value)
-    }
-
     fn borrow_imm<R>(&self, op: &fn(t: &T) -> R) -> R {
         match self.mode {
           Mutable => fail!(~"currently mutable"),
           ReadOnly | Immutable => {}
         }
 
-        do with(&mut self.mode, Immutable) {
-            op(unsafe{transmute_immut(&mut self.value)})
+        do with( unsafe { transmute_mut(&self.mode) }, Immutable) {
+            op( &self.value )
         }
     }
 
@@ -97,62 +93,3 @@ pub fn test_imm_in_mut() {
         }
     }
 }
-
-#[test]
-pub fn test_const_in_mut() {
-    let m = @Mut(1);
-    do m.borrow_mut |p| {
-        do m.borrow_const |q| {
-            assert!(*p == *q);
-            *p += 1;
-            assert!(*p == *q);
-        }
-    }
-}
-
-#[test]
-pub fn test_mut_in_const() {
-    let m = @Mut(1);
-    do m.borrow_const |p| {
-        do m.borrow_mut |q| {
-            assert!(*p == *q);
-            *q += 1;
-            assert!(*p == *q);
-        }
-    }
-}
-
-#[test]
-pub fn test_imm_in_const() {
-    let m = @Mut(1);
-    do m.borrow_const |p| {
-        do m.borrow_imm |q| {
-            assert!(*p == *q);
-        }
-    }
-}
-
-#[test]
-pub fn test_const_in_imm() {
-    let m = @Mut(1);
-    do m.borrow_imm |p| {
-        do m.borrow_const |q| {
-            assert!(*p == *q);
-        }
-    }
-}
-
-
-#[test]
-#[ignore(cfg(windows))]
-#[should_fail]
-pub fn test_mut_in_imm_in_const() {
-    let m = @Mut(1);
-    do m.borrow_const |_p| {
-        do m.borrow_imm |_q| {
-            do m.borrow_mut |_r| {
-            }
-        }
-    }
-}
-