Skip to content

Commit bc3a10b

Browse files
committed
Remove nearly all uses of ~[] from libtest.
Deny further uses, with explicit allows on a few specific functions.
1 parent 6d778ff commit bc3a10b

File tree

2 files changed

+24
-27
lines changed

2 files changed

+24
-27
lines changed

src/libtest/lib.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
html_root_url = "http://static.rust-lang.org/doc/master")];
3434

3535
#[feature(asm, macro_rules)];
36-
#[allow(deprecated_owned_vector)]; // NOTE: remove after stage0
36+
#[deny(deprecated_owned_vector)];
3737

3838
extern crate collections;
3939
extern crate getopts;
@@ -363,15 +363,10 @@ pub fn opt_shard(maybestr: Option<~str>) -> Option<(uint,uint)> {
363363
match maybestr {
364364
None => None,
365365
Some(s) => {
366-
let vector = s.split('.').to_owned_vec();
367-
if vector.len() == 2 {
368-
match (from_str::<uint>(vector[0]),
369-
from_str::<uint>(vector[1])) {
370-
(Some(a), Some(b)) => Some((a, b)),
371-
_ => None
372-
}
373-
} else {
374-
None
366+
let mut it = s.split('.');
367+
match (it.next().and_then(from_str), it.next().and_then(from_str), it.next()) {
368+
(Some(a), Some(b), None) => Some((a, b)),
369+
_ => None,
375370
}
376371
}
377372
}
@@ -950,6 +945,7 @@ pub fn run_test(force_ignore: bool,
950945
return;
951946
}
952947

948+
#[allow(deprecated_owned_vector)]
953949
fn run_test_inner(desc: TestDesc,
954950
monitor_ch: Sender<MonitorMsg>,
955951
testfn: proc()) {

src/libtest/stats.rs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ impl Summary {
168168
impl<'a> Stats for &'a [f64] {
169169

170170
// FIXME #11059 handle NaN, inf and overflow
171+
#[allow(deprecated_owned_vector)]
171172
fn sum(self) -> f64 {
172173
let mut partials : ~[f64] = ~[];
173174

@@ -246,28 +247,28 @@ impl<'a> Stats for &'a [f64] {
246247

247248
fn median_abs_dev(self) -> f64 {
248249
let med = self.median();
249-
let abs_devs = self.map(|&v| num::abs(med - v));
250+
let abs_devs: Vec<f64> = self.iter().map(|&v| num::abs(med - v)).collect();
250251
// This constant is derived by smarter statistics brains than me, but it is
251252
// consistent with how R and other packages treat the MAD.
252-
abs_devs.median() * 1.4826
253+
abs_devs.as_slice().median() * 1.4826
253254
}
254255

255256
fn median_abs_dev_pct(self) -> f64 {
256257
(self.median_abs_dev() / self.median()) * 100.0
257258
}
258259

259260
fn percentile(self, pct: f64) -> f64 {
260-
let mut tmp = self.to_owned();
261-
f64_sort(tmp);
262-
percentile_of_sorted(tmp, pct)
261+
let mut tmp = Vec::from_slice(self);
262+
f64_sort(tmp.as_mut_slice());
263+
percentile_of_sorted(tmp.as_slice(), pct)
263264
}
264265

265266
fn quartiles(self) -> (f64,f64,f64) {
266-
let mut tmp = self.to_owned();
267-
f64_sort(tmp);
268-
let a = percentile_of_sorted(tmp, 25.0);
269-
let b = percentile_of_sorted(tmp, 50.0);
270-
let c = percentile_of_sorted(tmp, 75.0);
267+
let mut tmp = Vec::from_slice(self);
268+
f64_sort(tmp.as_mut_slice());
269+
let a = percentile_of_sorted(tmp.as_slice(), 25.0);
270+
let b = percentile_of_sorted(tmp.as_slice(), 50.0);
271+
let c = percentile_of_sorted(tmp.as_slice(), 75.0);
271272
(a,b,c)
272273
}
273274

@@ -308,10 +309,10 @@ fn percentile_of_sorted(sorted_samples: &[f64],
308309
///
309310
/// See: http://en.wikipedia.org/wiki/Winsorising
310311
pub fn winsorize(samples: &mut [f64], pct: f64) {
311-
let mut tmp = samples.to_owned();
312-
f64_sort(tmp);
313-
let lo = percentile_of_sorted(tmp, pct);
314-
let hi = percentile_of_sorted(tmp, 100.0-pct);
312+
let mut tmp = Vec::from_slice(samples);
313+
f64_sort(tmp.as_mut_slice());
314+
let lo = percentile_of_sorted(tmp.as_slice(), pct);
315+
let hi = percentile_of_sorted(tmp.as_slice(), 100.0-pct);
315316
for samp in samples.mut_iter() {
316317
if *samp > hi {
317318
*samp = hi
@@ -1009,6 +1010,7 @@ mod tests {
10091010

10101011
#[test]
10111012
fn test_boxplot_nonpositive() {
1013+
#[allow(deprecated_owned_vector)]
10121014
fn t(s: &Summary, expected: ~str) {
10131015
use std::io::MemWriter;
10141016
let mut m = MemWriter::new();
@@ -1035,7 +1037,6 @@ mod tests {
10351037
#[cfg(test)]
10361038
mod bench {
10371039
use BenchHarness;
1038-
use std::slice;
10391040
use stats::Stats;
10401041

10411042
#[bench]
@@ -1047,10 +1048,10 @@ mod bench {
10471048
#[bench]
10481049
pub fn sum_many_f64(bh: &mut BenchHarness) {
10491050
let nums = [-1e30, 1e60, 1e30, 1.0, -1e60];
1050-
let v = slice::from_fn(500, |i| nums[i%5]);
1051+
let v = Vec::from_fn(500, |i| nums[i%5]);
10511052

10521053
bh.iter(|| {
1053-
v.sum();
1054+
v.as_slice().sum();
10541055
})
10551056
}
10561057
}

0 commit comments

Comments
 (0)