diff options
| author | bors <bors@rust-lang.org> | 2013-09-26 18:46:10 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-09-26 18:46:10 -0700 |
| commit | a94158ce64524b7e21e6c8ec23a6b762d45926fb (patch) | |
| tree | 910767022dcecd289d5725833b1150054be5ef68 /src/libsyntax/parse/parser.rs | |
| parent | 1434b4bfcafe90cffa6627e3be18a9e5b6501ad1 (diff) | |
| parent | c1d64297f071ea166ffbe5aea4fa5f94da3b3622 (diff) | |
| download | rust-a94158ce64524b7e21e6c8ec23a6b762d45926fb.tar.gz rust-a94158ce64524b7e21e6c8ec23a6b762d45926fb.zip | |
auto merge of #9504 : brson/rust/continue, r=alexcrichton
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 74447b5dae1..d9fb53b4677 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1786,6 +1786,17 @@ impl Parser { } } 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) { @@ -2578,6 +2589,7 @@ impl Parser { 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"); |
