about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-10-02 02:31:29 -0700
committerbors <bors@rust-lang.org>2013-10-02 02:31:29 -0700
commitd00c9269dce3a7925d7d0bf5edb64b3c6747c6af (patch)
tree2446c316e34164e1b0795fb909de8951d503fe20 /src/libsyntax/parse
parent97cd495aca946d088e103d364d3be34f2bfaf1e1 (diff)
parent4f67dcb24adb1e23f04e624fcbaf2328b82491b6 (diff)
downloadrust-d00c9269dce3a7925d7d0bf5edb64b3c6747c6af.tar.gz
rust-d00c9269dce3a7925d7d0bf5edb64b3c6747c6af.zip
auto merge of #9665 : alexcrichton/rust/snapshot, r=brson
Uses the new snapshots to kill the old `loop` and introduce the new `continue`.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/lexer.rs2
-rw-r--r--src/libsyntax/parse/obsolete.rs6
-rw-r--r--src/libsyntax/parse/parser.rs3
3 files changed, 9 insertions, 2 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs
index 4a384f864b0..79c330c4737 100644
--- a/src/libsyntax/parse/lexer.rs
+++ b/src/libsyntax/parse/lexer.rs
@@ -431,7 +431,7 @@ fn scan_digits(rdr: @mut StringReader, radix: uint) -> ~str {
     let mut rslt = ~"";
     loop {
         let c = rdr.curr;
-        if c == '_' { bump(rdr); loop; }
+        if c == '_' { bump(rdr); continue; }
         match char::to_digit(c, radix) {
           Some(_) => {
             rslt.push_char(c);
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index adf0c208da4..5a8563f963d 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -63,6 +63,7 @@ pub enum ObsoleteSyntax {
     ObsoleteTraitFuncVisibility,
     ObsoleteConstPointer,
     ObsoleteEmptyImpl,
+    ObsoleteLoopAsContinue,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -244,6 +245,11 @@ impl ParserObsoleteMethods for Parser {
                 "empty implementation",
                 "instead of `impl A;`, write `impl A {}`"
             ),
+            ObsoleteLoopAsContinue => (
+                "`loop` instead of `continue`",
+                "`loop` is now only used for loops and `continue` is used for \
+                 skipping iterations"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 4dd09cbcbd2..4598bc04369 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -1987,7 +1987,7 @@ impl Parser {
                   }
                   _ => self.unexpected()
                 }
-                loop;
+                continue;
             }
             if self.expr_is_complete(e) { break; }
             match *self.token {
@@ -2597,6 +2597,7 @@ impl Parser {
                               "a label may not be used with a `loop` expression");
             }
 
+            self.obsolete(*self.last_span, ObsoleteLoopAsContinue);
             let lo = self.span.lo;
             let ex = if self.token_is_lifetime(&*self.token) {
                 let lifetime = self.get_lifetime(&*self.token);