]> git.lizzy.rs Git - rust.git/blobdiff - src/libsyntax/parse/parser.rs
auto merge of #9525 : klutzy/rust/obsolete-span-fix, r=alexcrichton
[rust.git] / src / libsyntax / parse / parser.rs
index e604384c2597b39372de75fac1d2214b23cf0501..cc5143977cf2f8f9486719368ae1a5688699adbe 100644 (file)
@@ -1789,6 +1789,17 @@ pub fn parse_bottom_expr(&self) -> @Expr {
             }
         } else if self.eat_keyword(keywords::Loop) {
             return self.parse_loop_expr(None);
+        } else if self.eat_keyword(keywords::Continue) {
+            let lo = self.span.lo;
+            let ex = if self.token_is_lifetime(&*self.token) {
+                let lifetime = self.get_lifetime(&*self.token);
+                self.bump();
+                ExprAgain(Some(lifetime.name))
+            } else {
+                ExprAgain(None)
+            };
+            let hi = self.span.hi;
+            return self.mk_expr(lo, hi, ex);
         } else if self.eat_keyword(keywords::Match) {
             return self.parse_match_expr();
         } else if self.eat_keyword(keywords::Unsafe) {
@@ -2581,6 +2592,7 @@ pub fn parse_loop_expr(&self, opt_ident: Option<ast::Ident>) -> @Expr {
             return self.mk_expr(lo, hi, ExprLoop(body, opt_ident));
         } else {
             // This is a 'continue' expression
+            // FIXME #9467 rm support for 'loop' here after snapshot
             if opt_ident.is_some() {
                 self.span_err(*self.last_span,
                               "a label may not be used with a `loop` expression");