diff --git a/src/librustc/middle/check_loop.rs b/src/librustc/middle/check_loop.rs index 623f3525d4a90b3111740d20ce7e43b51d50c38a..41ef55933cda2e841f14d54f9af249fdf29b0fa8 100644 --- a/src/librustc/middle/check_loop.rs +++ b/src/librustc/middle/check_loop.rs @@ -45,10 +45,6 @@ fn visit_expr(&mut self, e: &ast::Expr) { ast::ExprLoop(ref b, _) => { self.with_context(Loop, |v| v.visit_block(&**b)); } - ast::ExprForLoop(_, ref e, ref b, _) => { - self.visit_expr(&**e); - self.with_context(Loop, |v| v.visit_block(&**b)); - } ast::ExprClosure(_, _, _, ref b) => { self.with_context(Closure, |v| v.visit_block(&**b)); } diff --git a/src/librustc/middle/check_match.rs b/src/librustc/middle/check_match.rs index 86ab26ea40d940bdbd18fb9499026399da6a54e4..aded63336dcd538676c1caaa2f7f27d311bdd7eb 100644 --- a/src/librustc/middle/check_match.rs +++ b/src/librustc/middle/check_match.rs @@ -223,19 +223,6 @@ fn check_expr(cx: &mut MatchCheckCtxt, ex: &ast::Expr) { .collect(); check_exhaustive(cx, ex.span, &matrix, source); }, - ast::ExprForLoop(ref pat, _, _, _) => { - let mut static_inliner = StaticInliner::new(cx.tcx); - is_refutable(cx, &*static_inliner.fold_pat((*pat).clone()), |uncovered_pat| { - span_err!(cx.tcx.sess, pat.span, E0297, - "refutable pattern in `for` loop binding: \ - `{}` not covered", - pat_to_string(uncovered_pat)); - }); - - // Check legality of move bindings. - check_legality_of_move_bindings(cx, false, slice::ref_slice(pat)); - check_legality_of_bindings_in_at_patterns(cx, &**pat); - } _ => () } } diff --git a/src/librustc/middle/region.rs b/src/librustc/middle/region.rs index 4e29e9b75e860bd073a2dd841403f553bb363b1c..c70532dbb30cb03723499a0e03bb23ad17f2e9d3 100644 --- a/src/librustc/middle/region.rs +++ b/src/librustc/middle/region.rs @@ -701,14 +701,6 @@ fn resolve_expr(visitor: &mut RegionResolutionVisitor, expr: &ast::Expr) { terminating(body.id); } - ast::ExprForLoop(ref _pat, ref _head, ref body, _) => { - terminating(body.id); - - // The variable parent of everything inside (most importantly, the - // pattern) is the body. - visitor.cx.var_parent = InnermostDeclaringBlock::Block(body.id); - } - ast::ExprMatch(..) => { visitor.cx.var_parent = InnermostDeclaringBlock::Match(expr.id); } diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 55cf5835bd744ebb2287827e2789532180f5c91f..19b788a38e6f8162dda9e6361a23b67226e8705f 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -4493,9 +4493,6 @@ pub fn expr_kind(tcx: &ctxt, expr: &ast::Expr) -> ExprKind { // the index method invoked for `a[i]` always yields an `&T` ast::ExprIndex(..) => LvalueExpr, - // `for` loops are statements - ast::ExprForLoop(..) => RvalueStmtExpr, - // in the general case, result could be any type, use DPS _ => RvalueDpsExpr }; diff --git a/src/librustc/util/common.rs b/src/librustc/util/common.rs index cdaca497b904ca8d9450df95c6489eb8968d6400..a433161d659e8a5a4f0350de4f93b2da4dcec4e4 100644 --- a/src/librustc/util/common.rs +++ b/src/librustc/util/common.rs @@ -96,7 +96,7 @@ fn visit_expr(&mut self, e: &ast::Expr) { match e.node { // Skip inner loops, since a break in the inner loop isn't a // break inside the outer loop - ast::ExprLoop(..) | ast::ExprWhile(..) | ast::ExprForLoop(..) => {} + ast::ExprLoop(..) | ast::ExprWhile(..) => {} _ => visit::walk_expr(self, e) } } diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 000426771a81af14a6b78c2336d78d1d0697fe56..fbccc466d57694c42b23681050edd210e55458b6 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -4562,39 +4562,6 @@ fn resolve_expr(&mut self, expr: &Expr) { }) } - ExprForLoop(ref pattern, ref head, ref body, optional_label) => { - self.resolve_expr(&**head); - - self.value_ribs.push(Rib::new(NormalRibKind)); - - self.resolve_pattern(&**pattern, - LocalIrrefutableMode, - &mut HashMap::new()); - - match optional_label { - None => {} - Some(label) => { - self.label_ribs - .push(Rib::new(NormalRibKind)); - let def_like = DlDef(DefLabel(expr.id)); - - { - let rib = self.label_ribs.last_mut().unwrap(); - let renamed = mtwt::resolve(label); - rib.bindings.insert(renamed, def_like); - } - } - } - - self.resolve_block(&**body); - - if optional_label.is_some() { - drop(self.label_ribs.pop()) - } - - self.value_ribs.pop(); - } - ExprBreak(Some(label)) | ExprAgain(Some(label)) => { let renamed = mtwt::resolve(label); match self.search_label(renamed) { diff --git a/src/librustc_trans/trans/expr.rs b/src/librustc_trans/trans/expr.rs index 2b97e7b79648a5ea0d143fec4a4d57c979250a54..46726f78d04f571e2b8616ec4bfb072a38180007 100644 --- a/src/librustc_trans/trans/expr.rs +++ b/src/librustc_trans/trans/expr.rs @@ -927,13 +927,6 @@ fn trans_rvalue_stmt_unadjusted<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, ast::ExprWhile(ref cond, ref body, _) => { controlflow::trans_while(bcx, expr, &**cond, &**body) } - ast::ExprForLoop(ref pat, ref head, ref body, _) => { - controlflow::trans_for(bcx, - expr_info(expr), - &**pat, - &**head, - &**body) - } ast::ExprLoop(ref body, _) => { controlflow::trans_loop(bcx, expr, &**body) } diff --git a/src/librustc_typeck/check/regionck.rs b/src/librustc_typeck/check/regionck.rs index 15602505d90d4e4bf3e67553adfa2e40a67ef790..8b5ad1357004e5de2f2466b0a62699311e289ffd 100644 --- a/src/librustc_typeck/check/regionck.rs +++ b/src/librustc_typeck/check/regionck.rs @@ -658,30 +658,6 @@ fn visit_expr(rcx: &mut Rcx, expr: &ast::Expr) { rcx.set_repeating_scope(repeating_scope); } - ast::ExprForLoop(ref pat, ref head, ref body, _) => { - constrain_bindings_in_pat(&**pat, rcx); - - { - let mc = mc::MemCategorizationContext::new(rcx.fcx); - let pat_ty = rcx.resolve_node_type(pat.id); - let pat_cmt = mc.cat_rvalue(pat.id, - pat.span, - ty::ReScope(CodeExtent::from_node_id(body.id)), - pat_ty); - link_pattern(rcx, mc, pat_cmt, &**pat); - } - - rcx.visit_expr(&**head); - type_of_node_must_outlive(rcx, - infer::AddrOf(expr.span), - head.id, - ty::ReScope(CodeExtent::from_node_id(expr.id))); - - let repeating_scope = rcx.set_repeating_scope(body.id); - rcx.visit_block(&**body); - rcx.set_repeating_scope(repeating_scope); - } - _ => { visit::walk_expr(rcx, expr); }