From 87f864292def92dc8e2fe4782c4e8cce0db0fb0a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 7 Mar 2013 18:37:05 -0500 Subject: std: Remove uses of DVec --- src/libstd/flatpipes.rs | 9 +++-- src/libstd/json.rs | 1 - src/libstd/sort.rs | 100 ++++++++++++++++++++++-------------------------- 3 files changed, 51 insertions(+), 59 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/flatpipes.rs b/src/libstd/flatpipes.rs index 734e6e83581..b117834238f 100644 --- a/src/libstd/flatpipes.rs +++ b/src/libstd/flatpipes.rs @@ -452,12 +452,13 @@ pub mod flatteners { pub fn serialize_value>(val: &T) -> ~[u8] { - let bytes_writer = @BytesWriter(); - let writer = bytes_writer as @Writer; + let mut bytes_writer = BytesWriter(); + let writer = @bytes_writer as @Writer; let ser = FromWriter::from_writer(writer); val.encode(&ser); - let bytes = bytes_writer.bytes.check_out(|bytes| bytes); - return bytes; + let mut ret = ~[]; + ret <-> bytes_writer.bytes; + return ret; } pub trait FromReader { diff --git a/src/libstd/json.rs b/src/libstd/json.rs index 01e0b58f77e..6506d8e3c41 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -27,7 +27,6 @@ use core::prelude::*; use core::hashmap::linear::LinearMap; use core::str; use core::to_str; -use core::vec; /// Represents a json value pub enum Json { diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs index 37be1c86e91..50de528762f 100644 --- a/src/libstd/sort.rs +++ b/src/libstd/sort.rs @@ -11,7 +11,6 @@ //! Sorting methods use core::cmp::{Eq, Ord}; -use core::dvec::DVec; use core::prelude::*; use core::util; use core::vec::{len, push}; @@ -189,7 +188,7 @@ pub fn tim_sort(array: &mut [T]) { return; } - let ms = &MergeState(); + let mut ms = MergeState(); let min_run = min_run_length(size); let mut idx = 0; @@ -392,66 +391,63 @@ struct RunState { } struct MergeState { - mut min_gallop: uint, - runs: DVec, + min_gallop: uint, + runs: ~[RunState], } // Fixme (#3853) Move into MergeState fn MergeState() -> MergeState { MergeState { min_gallop: MIN_GALLOP, - runs: DVec(), + runs: ~[], } } -pub impl MergeState { - fn push_run(&self, run_base: uint, run_len: uint) { +impl MergeState { + fn push_run(&mut self, run_base: uint, run_len: uint) { let tmp = RunState{base: run_base, len: run_len}; self.runs.push(tmp); } - fn merge_at(&self, n: uint, array: &mut [T]) { + fn merge_at(&mut self, n: uint, array: &mut [T]) { let mut size = self.runs.len(); fail_unless!(size >= 2); fail_unless!(n == size-2 || n == size-3); - do self.runs.borrow_mut |arr| { + let mut b1 = self.runs[n].base; + let mut l1 = self.runs[n].len; + let b2 = self.runs[n+1].base; + let l2 = self.runs[n+1].len; - let mut b1 = arr[n].base; - let mut l1 = arr[n].len; - let b2 = arr[n+1].base; - let l2 = arr[n+1].len; + fail_unless!(l1 > 0 && l2 > 0); + fail_unless!(b1 + l1 == b2); - fail_unless!(l1 > 0 && l2 > 0); - fail_unless!(b1 + l1 == b2); - - arr[n].len = l1 + l2; - if n == size-3 { - arr[n+1].base = arr[n+2].base; - arr[n+1].len = arr[n+2].len; - } + self.runs[n].len = l1 + l2; + if n == size-3 { + self.runs[n+1].base = self.runs[n+2].base; + self.runs[n+1].len = self.runs[n+2].len; + } - let slice = vec::mut_slice(array, b1, b1+l1); - let k = gallop_right(&const array[b2], slice, 0); - b1 += k; - l1 -= k; - if l1 != 0 { - let slice = vec::mut_slice(array, b2, b2+l2); - let l2 = gallop_left( - &const array[b1+l1-1],slice,l2-1); - if l2 > 0 { - if l1 <= l2 { - self.merge_lo(array, b1, l1, b2, l2); - } else { - self.merge_hi(array, b1, l1, b2, l2); - } + let slice = vec::mut_slice(array, b1, b1+l1); + let k = gallop_right(&const array[b2], slice, 0); + b1 += k; + l1 -= k; + if l1 != 0 { + let slice = vec::mut_slice(array, b2, b2+l2); + let l2 = gallop_left( + &const array[b1+l1-1],slice,l2-1); + if l2 > 0 { + if l1 <= l2 { + self.merge_lo(array, b1, l1, b2, l2); + } else { + self.merge_hi(array, b1, l1, b2, l2); } } } self.runs.pop(); } - fn merge_lo(&self, array: &mut [T], base1: uint, len1: uint, + fn merge_lo(&mut self, array: &mut [T], base1: uint, len1: uint, base2: uint, len2: uint) { fail_unless!(len1 != 0 && len2 != 0 && base1+len1 == base2); @@ -554,7 +550,7 @@ pub impl MergeState { } } - fn merge_hi(&self, array: &mut [T], base1: uint, len1: uint, + fn merge_hi(&mut self, array: &mut [T], base1: uint, len1: uint, base2: uint, len2: uint) { fail_unless!(len1 != 1 && len2 != 0 && base1 + len1 == base2); @@ -672,32 +668,28 @@ pub impl MergeState { } } - fn merge_collapse(&self, array: &mut [T]) { + fn merge_collapse(&mut self, array: &mut [T]) { while self.runs.len() > 1 { let mut n = self.runs.len()-2; - let chk = do self.runs.borrow |arr| { - if n > 0 && arr[n-1].len <= arr[n].len + arr[n+1].len { - if arr[n-1].len < arr[n+1].len { n -= 1; } - true - } else if arr[n].len <= arr[n+1].len { - true - } else { - false - } - }; - if !chk { break; } + if n > 0 && + self.runs[n-1].len <= self.runs[n].len + self.runs[n+1].len + { + if self.runs[n-1].len < self.runs[n+1].len { n -= 1; } + } else if self.runs[n].len <= self.runs[n+1].len { + /* keep going */ + } else { + break; + } self.merge_at(n, array); } } - fn merge_force_collapse(&self, array: &mut [T]) { + fn merge_force_collapse(&mut self, array: &mut [T]) { while self.runs.len() > 1 { let mut n = self.runs.len()-2; if n > 0 { - do self.runs.borrow |arr| { - if arr[n-1].len < arr[n+1].len { - n -= 1; - } + if self.runs[n-1].len < self.runs[n+1].len { + n -= 1; } } self.merge_at(n, array); -- cgit 1.4.1-3-g733a5 From 62651df2b482af4dc98b0aec6c5f1ad112fab8ec Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 7 Mar 2013 23:44:38 -0500 Subject: Fix dvec-related fallout in tests --- src/libcore/io.rs | 8 +++--- src/libstd/flatpipes.rs | 15 +++++------- src/libstd/json.rs | 9 +++---- src/libsyntax/parse/mod.rs | 6 ++--- .../run-pass/call-closure-from-overloaded-op.rs | 2 +- src/test/run-pass/issue-2631-b.rs | 3 +-- src/test/run-pass/issue-5275 | Bin 16176 -> 0 bytes src/test/run-pass/issue-5275.rs | 27 --------------------- 8 files changed, 17 insertions(+), 53 deletions(-) delete mode 100755 src/test/run-pass/issue-5275 delete mode 100644 src/test/run-pass/issue-5275.rs (limited to 'src/libstd') diff --git a/src/libcore/io.rs b/src/libcore/io.rs index 34fa4c972ea..4634eb8793d 100644 --- a/src/libcore/io.rs +++ b/src/libcore/io.rs @@ -1442,17 +1442,15 @@ mod tests { fn bytes_buffer_overwrite() { let wr = BytesWriter(); wr.write(~[0u8, 1u8, 2u8, 3u8]); - fail_unless!(wr.bytes.borrow(|bytes| bytes == ~[0u8, 1u8, 2u8, 3u8])); + fail_unless!(wr.bytes == ~[0u8, 1u8, 2u8, 3u8]); wr.seek(-2, SeekCur); wr.write(~[4u8, 5u8, 6u8, 7u8]); - fail_unless!(wr.bytes.borrow(|bytes| bytes == - ~[0u8, 1u8, 4u8, 5u8, 6u8, 7u8])); + fail_unless!(wr.bytes == ~[0u8, 1u8, 4u8, 5u8, 6u8, 7u8]); wr.seek(-2, SeekEnd); wr.write(~[8u8]); wr.seek(1, SeekSet); wr.write(~[9u8]); - fail_unless!(wr.bytes.borrow(|bytes| bytes == - ~[0u8, 9u8, 4u8, 5u8, 8u8, 7u8])); + fail_unless!(wr.bytes == ~[0u8, 9u8, 4u8, 5u8, 8u8, 7u8]); } #[test] diff --git a/src/libstd/flatpipes.rs b/src/libstd/flatpipes.rs index b117834238f..897cb4c2034 100644 --- a/src/libstd/flatpipes.rs +++ b/src/libstd/flatpipes.rs @@ -452,13 +452,10 @@ pub mod flatteners { pub fn serialize_value>(val: &T) -> ~[u8] { - let mut bytes_writer = BytesWriter(); - let writer = @bytes_writer as @Writer; - let ser = FromWriter::from_writer(writer); - val.encode(&ser); - let mut ret = ~[]; - ret <-> bytes_writer.bytes; - return ret; + do io::with_bytes_writer |writer| { + let ser = FromWriter::from_writer(writer); + val.encode(&ser); + } } pub trait FromReader { @@ -652,7 +649,7 @@ mod test { chan.send(10); - let bytes = chan.byte_chan.writer.bytes.get(); + let bytes = copy chan.byte_chan.writer.bytes; let reader = BufReader::new(bytes); let port = serial::reader_port(reader); @@ -698,7 +695,7 @@ mod test { chan.send(10); - let bytes = chan.byte_chan.writer.bytes.get(); + let bytes = copy chan.byte_chan.writer.bytes; let reader = BufReader::new(bytes); let port = pod::reader_port(reader); diff --git a/src/libstd/json.rs b/src/libstd/json.rs index 6506d8e3c41..9208d415971 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -1311,8 +1311,7 @@ mod tests { } } } - check_equal(str::from_bytes(bw.bytes.data), - ~"[\"frog\",[\"Henry\",349]]"); + check_equal(str::from_bytes(bw.bytes), ~"[\"frog\",[\"Henry\",349]]"); } #[test] @@ -1327,8 +1326,7 @@ mod tests { } } } - check_equal(str::from_bytes(bw.bytes.data), - ~"\"jodhpurs\""); + check_equal(str::from_bytes(bw.bytes), ~"\"jodhpurs\""); } #[test] @@ -1340,8 +1338,7 @@ mod tests { do encoder.emit_enum_variant (~"None",37,1242) { } } - check_equal(str::from_bytes(bw.bytes.data), - ~"null"); + check_equal(str::from_bytes(bw.bytes), ~"null"); } #[test] diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 48d3fbe8889..a1fc7230dd1 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -303,9 +303,9 @@ mod test { use util::testing::*; #[test] fn to_json_str (val: Encodable) -> ~str { - let bw = @io::BytesWriter(); - val.encode(~std::json::Encoder(bw as io::Writer)); - str::from_bytes(bw.bytes.data) + do io::with_str_writer |writer| { + val.encode(~std::json::Encoder(writer)); + } } #[test] fn alltts () { diff --git a/src/test/run-pass/call-closure-from-overloaded-op.rs b/src/test/run-pass/call-closure-from-overloaded-op.rs index cbfae48302b..39864059fcd 100644 --- a/src/test/run-pass/call-closure-from-overloaded-op.rs +++ b/src/test/run-pass/call-closure-from-overloaded-op.rs @@ -11,7 +11,7 @@ fn foo() -> int { 22 } pub fn main() { - let x: ~[@fn() -> int] = ~[]; + let mut x: ~[@fn() -> int] = ~[]; x.push(foo); fail_unless!((x[0])() == 22); } diff --git a/src/test/run-pass/issue-2631-b.rs b/src/test/run-pass/issue-2631-b.rs index 66383253f7c..5f5e2f9fc30 100644 --- a/src/test/run-pass/issue-2631-b.rs +++ b/src/test/run-pass/issue-2631-b.rs @@ -15,12 +15,11 @@ extern mod req; extern mod std; use req::*; -use std::oldmap::*; use std::oldmap::HashMap; pub fn main() { let v = ~[@~"hi"]; let m: req::header_map = HashMap(); - m.insert(~"METHOD", @mut ~[v]); + m.insert(~"METHOD", @mut v); request::(m); } diff --git a/src/test/run-pass/issue-5275 b/src/test/run-pass/issue-5275 deleted file mode 100755 index ea8edf5156a..00000000000 Binary files a/src/test/run-pass/issue-5275 and /dev/null differ diff --git a/src/test/run-pass/issue-5275.rs b/src/test/run-pass/issue-5275.rs deleted file mode 100644 index a1b93d99f28..00000000000 --- a/src/test/run-pass/issue-5275.rs +++ /dev/null @@ -1,27 +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 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -fn foo(self: &A) -> int { - if true { - fail!() - } else { - *bar(self.bar) - } -} - -pub fn main() {} - -fn bar(_: &r/mut int) -> &r/int { - fail!() -} - -struct A { - bar: @mut int, -} -- cgit 1.4.1-3-g733a5