about summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2013-09-08 22:08:01 +1000
committerHuon Wilson <dbau.pp+github@gmail.com>2013-09-08 22:08:01 +1000
commit07351b44c657225d45e2aa0a302ccd28f96839a8 (patch)
treee61809a471532d32ed51f9d72ea0536b9fef471c /src/libsyntax/ext
parentb609d022c4df307e4d68499b063c81a9ecb1e9cf (diff)
downloadrust-07351b44c657225d45e2aa0a302ccd28f96839a8.tar.gz
rust-07351b44c657225d45e2aa0a302ccd28f96839a8.zip
syntax: implement labelled breaks for `for`.
`for` desugars to `loop` so it is trivial to just desugar to `loop` while
retaining any label.
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/expand.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index cde418ca991..abade04fedf 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -113,7 +113,7 @@ pub fn expand_expr(extsbox: @mut SyntaxEnv,
 
         // Desugar expr_for_loop
         // From: `for <src_pat> in <src_expr> <src_loop_block>`
-        ast::ExprForLoop(src_pat, src_expr, ref src_loop_block) => {
+        ast::ExprForLoop(src_pat, src_expr, ref src_loop_block, opt_ident) => {
             let src_pat = src_pat.clone();
             let src_expr = src_expr.clone();
 
@@ -257,7 +257,7 @@ pub fn expand_expr(extsbox: @mut SyntaxEnv,
             // `loop { ... }`
             let loop_block = {
                 let loop_body_block = mk_block(cx, [match_stmt], None, span);
-                let loop_body_expr = mk_expr(cx, span, ast::ExprLoop(loop_body_block, None));
+                let loop_body_expr = mk_expr(cx, span, ast::ExprLoop(loop_body_block, opt_ident));
                 let loop_body_stmt = @spanned(lo, hi, ast::StmtExpr(loop_body_expr, cx.next_id()));
                 mk_block(cx, [iter_decl_stmt,
                               loop_body_stmt],