rustc: Fix for-range loops that can use iterators

Transform range loops that can be regular iterator loops.
This commit is contained in:
blake2-ppc 2013-08-07 20:19:15 +02:00
parent d19ca2c714
commit bdfdbdd7f6
9 changed files with 21 additions and 29 deletions

View file

@ -413,8 +413,8 @@ fn check_expected_errors(expected_errors: ~[errors::ExpectedError],
} }
} }
for i in range(0u, found_flags.len()) { for (i, &flag) in found_flags.iter().enumerate() {
if !found_flags[i] { if !flag {
let ee = &expected_errors[i]; let ee = &expected_errors[i];
fatal_ProcRes(fmt!("expected %s on line %u not found: %s", fatal_ProcRes(fmt!("expected %s on line %u not found: %s",
ee.kind, ee.line, ee.msg), ProcRes); ee.kind, ee.line, ee.msg), ProcRes);

View file

@ -159,10 +159,10 @@ impl<'self> CheckLoanCtxt<'self> {
true true
}; };
for i in range(0u, new_loan_indices.len()) { for (i, &x) in new_loan_indices.iter().enumerate() {
let old_loan = &self.all_loans[new_loan_indices[i]]; let old_loan = &self.all_loans[x];
for j in range(i+1, new_loan_indices.len()) { for &y in new_loan_indices.slice_from(i+1).iter() {
let new_loan = &self.all_loans[new_loan_indices[j]]; let new_loan = &self.all_loans[y];
self.report_error_if_loans_conflict(old_loan, new_loan); self.report_error_if_loans_conflict(old_loan, new_loan);
} }
} }

View file

@ -983,10 +983,10 @@ fn bitwise(out_vec: &mut [uint],
op: &fn(uint, uint) -> uint) -> bool { op: &fn(uint, uint) -> uint) -> bool {
assert_eq!(out_vec.len(), in_vec.len()); assert_eq!(out_vec.len(), in_vec.len());
let mut changed = false; let mut changed = false;
for i in range(0u, out_vec.len()) { for (out_elt, in_elt) in out_vec.mut_iter().zip(in_vec.iter()) {
let old_val = out_vec[i]; let old_val = *out_elt;
let new_val = op(old_val, in_vec[i]); let new_val = op(old_val, *in_elt);
out_vec[i] = new_val; *out_elt = new_val;
changed |= (old_val != new_val); changed |= (old_val != new_val);
} }
changed changed

View file

@ -1742,8 +1742,7 @@ pub fn copy_args_to_allocas(fcx: @mut FunctionContext,
_ => {} _ => {}
} }
for arg_n in range(0u, arg_tys.len()) { for (arg_n, &arg_ty) in arg_tys.iter().enumerate() {
let arg_ty = arg_tys[arg_n];
let raw_llarg = raw_llargs[arg_n]; let raw_llarg = raw_llargs[arg_n];
// For certain mode/type combinations, the raw llarg values are passed // For certain mode/type combinations, the raw llarg values are passed

View file

@ -145,8 +145,8 @@ fn classify_ty(ty: Type) -> ~[RegClass] {
} }
fn all_mem(cls: &mut [RegClass]) { fn all_mem(cls: &mut [RegClass]) {
for i in range(0u, cls.len()) { for elt in cls.mut_iter() {
cls[i] = Memory; *elt = Memory;
} }
} }

View file

@ -205,15 +205,8 @@ pub fn type_uses_for(ccx: @mut CrateContext, fn_id: def_id, n_tps: uint)
pub fn type_needs(cx: &Context, use_: uint, ty: ty::t) { pub fn type_needs(cx: &Context, use_: uint, ty: ty::t) {
// Optimization -- don't descend type if all params already have this use // Optimization -- don't descend type if all params already have this use
let len = { if cx.uses.iter().any(|&elt| elt & use_ != use_) {
let uses = &*cx.uses;
uses.len()
};
for i in range(0u, len) {
if cx.uses[i] & use_ != use_ {
type_needs_inner(cx, use_, ty, @Nil); type_needs_inner(cx, use_, ty, @Nil);
return;
}
} }
} }

View file

@ -772,8 +772,8 @@ impl<'self> LookupContext<'self> {
self.tcx().sess.span_err( self.tcx().sess.span_err(
self.expr.span, self.expr.span,
"multiple applicable methods in scope"); "multiple applicable methods in scope");
for idx in range(0u, relevant_candidates.len()) { for (idx, candidate) in relevant_candidates.iter().enumerate() {
self.report_candidate(idx, &relevant_candidates[idx].origin); self.report_candidate(idx, &candidate.origin);
} }
} }

View file

@ -554,8 +554,8 @@ impl CoherenceChecker {
let mut provided_names = HashSet::new(); let mut provided_names = HashSet::new();
// Implemented methods // Implemented methods
for i in range(0u, all_methods.len()) { for elt in all_methods.iter() {
provided_names.insert(all_methods[i].ident); provided_names.insert(elt.ident);
} }
let r = ty::trait_methods(tcx, trait_did); let r = ty::trait_methods(tcx, trait_did);

View file

@ -374,8 +374,8 @@ impl RegionVarBindings {
pub fn vars_created_since_snapshot(&mut self, snapshot: uint) pub fn vars_created_since_snapshot(&mut self, snapshot: uint)
-> ~[RegionVid] { -> ~[RegionVid] {
do vec::build |push| { do vec::build |push| {
for i in range(snapshot, self.undo_log.len()) { for &elt in self.undo_log.slice_from(snapshot).iter() {
match self.undo_log[i] { match elt {
AddVar(vid) => push(vid), AddVar(vid) => push(vid),
_ => () _ => ()
} }