Skip to content

Commit 9999622

Browse files
committed
Patch up some code that was using irrefutable patterns incorrectly.
1 parent ba13482 commit 9999622

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/libstd/run.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -715,10 +715,16 @@ fn with_envp<T>(env: Option<&[(~str, ~str)]>, cb: &fn(*c_void) -> T) -> T {
715715
let mut tmps = ~[];
716716
let mut ptrs = ~[];
717717

718-
for es.iter().advance |&(k, v)| {
719-
let kv = @fmt!("%s=%s", k, v);
720-
tmps.push(kv);
721-
ptrs.push(str::as_c_str(*kv, |b| b));
718+
for es.iter().advance |pair| {
719+
// Use of match here is just to workaround limitations
720+
// in the stage0 irrefutable pattern impl.
721+
match pair {
722+
&(ref k, ref v) => {
723+
let kv = @fmt!("%s=%s", *k, *v);
724+
tmps.push(kv);
725+
ptrs.push(str::as_c_str(*kv, |b| b));
726+
}
727+
}
722728
}
723729

724730
ptrs.push(ptr::null());
@@ -1294,9 +1300,9 @@ mod tests {
12941300
let output = str::from_bytes(prog.finish_with_output().output);
12951301
12961302
let r = os::env();
1297-
for r.iter().advance |&(k, v)| {
1303+
for r.iter().advance |&(ref k, ref v)| {
12981304
// don't check windows magical empty-named variables
1299-
assert!(k.is_empty() || output.contains(fmt!("%s=%s", k, v)));
1305+
assert!(k.is_empty() || output.contains(fmt!("%s=%s", *k, *v)));
13001306
}
13011307
}
13021308
#[test]

src/libstd/vec.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,16 +281,16 @@ pub trait VectorVector<T> {
281281
impl<'self, T:Copy> VectorVector<T> for &'self [~[T]] {
282282
/// Flattens a vector of slices of T into a single vector of T.
283283
pub fn concat_vec(&self) -> ~[T] {
284-
self.flat_map(|&inner| inner)
284+
self.flat_map(|inner| copy *inner)
285285
}
286286

287287
/// Concatenate a vector of vectors, placing a given separator between each.
288288
pub fn connect_vec(&self, sep: &T) -> ~[T] {
289289
let mut r = ~[];
290290
let mut first = true;
291-
for self.iter().advance |&inner| {
291+
for self.iter().advance |inner| {
292292
if first { first = false; } else { r.push(copy *sep); }
293-
r.push_all(inner);
293+
r.push_all(copy *inner);
294294
}
295295
r
296296
}

0 commit comments

Comments
 (0)