about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-04-02 13:36:51 -0700
committerbors <bors@rust-lang.org>2013-04-02 13:36:51 -0700
commit5f13e9ccc2e3328d4cd8ca49f84e6840dd998346 (patch)
tree6e507951163f39e06f80387a0edde2b71c88f40f /src/libcore
parent00dbbd01c2aee72982b3e0f9511ae1d4428c3ba9 (diff)
parentf43e6af38d742b9b6d4c697e48ea239d7ef154c2 (diff)
downloadrust-5f13e9ccc2e3328d4cd8ca49f84e6840dd998346.tar.gz
rust-5f13e9ccc2e3328d4cd8ca49f84e6840dd998346.zip
auto merge of #5678 : Thiez/rust/no-Mut, r=thestinger
This pull request completely removes Mut<T> and the associated file (libcore/mutable.rs). Some minor changes were made to workcache (libstd/workcache.rs) as it was using Mut.

r?
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/core.rc1
-rw-r--r--src/libcore/mutable.rs158
2 files changed, 0 insertions, 159 deletions
diff --git a/src/libcore/core.rc b/src/libcore/core.rc
index 292dd1d92cf..f7c64e3f374 100644
--- a/src/libcore/core.rc
+++ b/src/libcore/core.rc
@@ -212,7 +212,6 @@ pub mod rand;
 pub mod run;
 pub mod sys;
 pub mod cast;
-pub mod mutable;
 pub mod flate;
 pub mod repr;
 pub mod cleanup;
diff --git a/src/libcore/mutable.rs b/src/libcore/mutable.rs
deleted file mode 100644
index e9639820e83..00000000000
--- a/src/libcore/mutable.rs
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-/*!
-
-Module for wrapping freezable data structures in managed boxes.
-Normally freezable data structures require an unaliased reference,
-such as `T` or `~T`, so that the compiler can track when they are
-being mutated.  The `managed<T>` type converts these static checks into
-dynamic checks: your program will fail if you attempt to perform
-mutation when the data structure should be immutable.
-
-*/
-
-use util::with;
-use cast::transmute_immut;
-
-enum Mode { ReadOnly, Mutable, Immutable }
-
-struct Data<T> {
-    priv mut value: T,
-    priv mut mode: Mode
-}
-
-pub type Mut<T> = Data<T>;
-
-pub fn Mut<T>(t: T) -> Mut<T> {
-    Data {value: t, mode: ReadOnly}
-}
-
-pub fn unwrap<T>(m: Mut<T>) -> T {
-    // Borrowck should prevent us from calling unwrap while the value
-    // is in use, as that would be a move from a borrowed value.
-    assert!((m.mode as uint) == (ReadOnly as uint));
-    let Data {value: value, mode: _} = m;
-    value
-}
-
-pub impl<T> Data<T> {
-    fn borrow_mut<R>(&self, op: &fn(t: &mut T) -> R) -> R {
-        match self.mode {
-            Immutable => fail!(~"currently immutable"),
-            ReadOnly | Mutable => {}
-        }
-
-        do with(&mut self.mode, Mutable) {
-            op(&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)})
-        }
-    }
-
-    #[inline(always)]
-    fn unwrap(self) -> T { unwrap(self) }
-}
-
-#[test]
-#[ignore(cfg(windows))]
-#[should_fail]
-pub fn test_mut_in_imm() {
-    let m = @Mut(1);
-    do m.borrow_imm |_p| {
-        do m.borrow_mut |_q| {
-            // should not be permitted
-        }
-    }
-}
-
-#[test]
-#[ignore(cfg(windows))]
-#[should_fail]
-pub fn test_imm_in_mut() {
-    let m = @Mut(1);
-    do m.borrow_mut |_p| {
-        do m.borrow_imm |_q| {
-            // should not be permitted
-        }
-    }
-}
-
-#[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| {
-            }
-        }
-    }
-}
-