Skip to content

Commit 0cc2636

Browse files
committed
---
yaml --- r: 12871 b: refs/heads/master c: 0eed37d h: refs/heads/master i: 12869: 588d5a7 12867: 2bbc457 12863: 8bda0cc v: v3
1 parent 1028bec commit 0cc2636

File tree

6 files changed

+40
-25
lines changed

6 files changed

+40
-25
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 0f20cae37fd703f344d226170ebe440ab76fe565
2+
refs/heads/master: 0eed37da290aa040bc57191da97bd3d322c1203d
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/cargo/cargo.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -652,23 +652,25 @@ fn install_named(c: cargo, wd: str, name: str) {
652652

653653
fn install_uuid_specific(c: cargo, wd: str, src: str, uuid: str) {
654654
alt c.sources.find(src) {
655-
some(s) {
656-
if vec::any(copy s.packages, { |p|
657-
if p.uuid == uuid {
658-
install_package(c, wd, p);
659-
true
660-
} else { false }
661-
}) { ret; }
662-
}
663-
_ { }
655+
some(s) {
656+
let packages = copy s.packages;
657+
if vec::any(packages, { |p|
658+
if p.uuid == uuid {
659+
install_package(c, wd, p);
660+
true
661+
} else { false }
662+
}) { ret; }
663+
}
664+
_ { }
664665
}
665666
error("Can't find package " + src + "/" + uuid);
666667
}
667668

668669
fn install_named_specific(c: cargo, wd: str, src: str, name: str) {
669670
alt c.sources.find(src) {
670671
some(s) {
671-
if vec::any(copy s.packages, { |p|
672+
let packages = copy s.packages;
673+
if vec::any(packages, { |p|
672674
if p.name == name {
673675
install_package(c, wd, p);
674676
true

trunk/src/libcore/vec.rs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export grow;
3333
export grow_fn;
3434
export grow_set;
3535
export map;
36+
export mapi;
3637
export map2;
3738
export flat_map;
3839
export filter_map;
@@ -440,13 +441,23 @@ fn grow_set<T: copy>(&v: [mut T], index: uint, initval: T, val: T) {
440441
#[doc = "
441442
Apply a function to each element of a vector and return the results
442443
"]
443-
fn map<T, U>(v: [T], f: fn(T) -> U) -> [U] {
444+
fn map<T, U>(v: [const T]/&, f: fn(T) -> U) -> [U] {
444445
let mut result = [];
445446
reserve(result, len(v));
446447
for each(v) {|elem| result += [f(elem)]; }
447448
ret result;
448449
}
449450

451+
#[doc = "
452+
Apply a function to each element of a vector and return the results
453+
"]
454+
fn mapi<T, U>(v: [const T]/&, f: fn(uint, T) -> U) -> [U] {
455+
let mut result = [];
456+
reserve(result, len(v));
457+
for eachi(v) {|i, elem| result += [f(i, elem)]; }
458+
ret result;
459+
}
460+
450461
#[doc = "
451462
Apply a function to each element of a vector and return a concatenation
452463
of each result vector
@@ -537,7 +548,7 @@ fn foldl<T: copy, U>(z: T, v: [const U], p: fn(T, U) -> T) -> T {
537548
}
538549

539550
#[doc = "Reduce a vector from right to left"]
540-
fn foldr<T, U: copy>(v: [const T], z: U, p: fn(T, U) -> U) -> U {
551+
fn foldr<T, U: copy>(v: [const T]/&, z: U, p: fn(T, U) -> U) -> U {
541552
let mut accum = z;
542553
riter(v) { |elt|
543554
accum = p(elt, accum);
@@ -550,7 +561,7 @@ Return true if a predicate matches any elements
550561
551562
If the vector contains no elements then false is returned.
552563
"]
553-
fn any<T>(v: [T], f: fn(T) -> bool) -> bool {
564+
fn any<T>(v: [const T]/&, f: fn(T) -> bool) -> bool {
554565
for each(v) {|elem| if f(elem) { ret true; } }
555566
ret false;
556567
}
@@ -560,7 +571,7 @@ Return true if a predicate matches any elements in both vectors.
560571
561572
If the vectors contains no elements then false is returned.
562573
"]
563-
fn any2<T, U>(v0: [const T], v1: [U], f: fn(T, U) -> bool) -> bool {
574+
fn any2<T, U>(v0: [const T]/&, v1: [const U]/&, f: fn(T, U) -> bool) -> bool {
564575
let v0_len = len(v0);
565576
let v1_len = len(v1);
566577
let mut i = 0u;
@@ -576,7 +587,7 @@ Return true if a predicate matches all elements
576587
577588
If the vector contains no elements then true is returned.
578589
"]
579-
fn all<T>(v: [T], f: fn(T) -> bool) -> bool {
590+
fn all<T>(v: [const T]/&, f: fn(T) -> bool) -> bool {
580591
for each(v) {|elem| if !f(elem) { ret false; } }
581592
ret true;
582593
}
@@ -586,7 +597,7 @@ Return true if a predicate matches all elements
586597
587598
If the vector contains no elements then true is returned.
588599
"]
589-
fn alli<T>(v: [T], f: fn(uint, T) -> bool) -> bool {
600+
fn alli<T>(v: [const T]/&, f: fn(uint, T) -> bool) -> bool {
590601
for eachi(v) {|i, elem| if !f(i, elem) { ret false; } }
591602
ret true;
592603
}
@@ -596,7 +607,7 @@ Return true if a predicate matches all elements in both vectors.
596607
597608
If the vectors are not the same size then false is returned.
598609
"]
599-
fn all2<T, U>(v0: [const T], v1: [const U], f: fn(T, U) -> bool) -> bool {
610+
fn all2<T, U>(v0: [const T]/&, v1: [const U]/&, f: fn(T, U) -> bool) -> bool {
600611
let v0_len = len(v0);
601612
if v0_len != len(v1) { ret false; }
602613
let mut i = 0u;
@@ -899,7 +910,7 @@ Iterates over a vector in reverse
899910
Iterates over vector `v` and, for each element, calls function `f` with the
900911
element's value.
901912
"]
902-
fn riter<T>(v: [const T], f: fn(T)) {
913+
fn riter<T>(v: [const T]/&, f: fn(T)) {
903914
riteri(v) { |_i, v| f(v) }
904915
}
905916

@@ -909,7 +920,7 @@ Iterates over a vector's elements and indexes in reverse
909920
Iterates over vector `v` and, for each element, calls function `f` with the
910921
element's value and index.
911922
"]
912-
fn riteri<T>(v: [const T], f: fn(uint, T)) {
923+
fn riteri<T>(v: [const T]/&, f: fn(uint, T)) {
913924
let mut i = len(v);
914925
while 0u < i {
915926
i -= 1u;
@@ -1115,8 +1126,7 @@ impl extensions<T> for [T] {
11151126
and return the results
11161127
"]
11171128
fn mapi<U>(f: fn(uint, T) -> U) -> [U] {
1118-
let mut i = 0u;
1119-
self.map { |e| i += 1u; f(i - 1u, e) }
1129+
mapi(self, f)
11201130
}
11211131
#[doc = "Returns true if the function returns true for all elements.
11221132

trunk/src/librustsyntax/ext/qquote.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,11 @@ fn finish<T: qq_helper>
257257
);
258258
let mut rcall = pcall;
259259
if (g_len > 0u) {
260+
let gather = copy qcx.gather;
260261
rcall = mk_call(cx,sp,
261262
["syntax", "ext", "qquote", "replace"],
262263
[pcall,
263-
mk_vec_e(cx,sp, vec::map(copy qcx.gather) {|g|
264+
mk_vec_e(cx,sp, vec::map(gather) {|g|
264265
mk_call(cx,sp,
265266
["syntax", "ext", "qquote", g.constr],
266267
[g.e])}),

trunk/src/libstd/test.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ fn run_tests_console(opts: test_opts,
213213

214214
fn print_failures(st: console_test_state) {
215215
st.out.write_line("\nfailures:");
216-
let failures = vec::map(copy st.failures) {|test| test.name};
216+
let failures = copy st.failures;
217+
let failures = vec::map(failures) {|test| test.name};
217218
let failures = sort::merge_sort(str::le, failures);
218219
for vec::each(failures) {|name|
219220
st.out.write_line(#fmt[" %s", name]);

trunk/src/rustc/middle/trans/base.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4012,7 +4012,8 @@ fn trans_block_cleanups_(bcx: block, cleanup_cx: block, is_lpad: bool) ->
40124012
let mut bcx = bcx;
40134013
alt check cleanup_cx.kind {
40144014
block_scope({cleanups, _}) {
4015-
vec::riter(copy cleanups) {|cu|
4015+
let cleanups = copy cleanups;
4016+
vec::riter(cleanups) {|cu|
40164017
alt cu {
40174018
clean(cfn, cleanup_type) | clean_temp(_, cfn, cleanup_type) {
40184019
// Some types don't need to be cleaned up during

0 commit comments

Comments
 (0)