about summary refs log tree commit diff
path: root/src/librustsyntax/parse/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustsyntax/parse/parser.rs')
-rw-r--r--src/librustsyntax/parse/parser.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/librustsyntax/parse/parser.rs b/src/librustsyntax/parse/parser.rs
index e2117a27ec3..0c7622fbc13 100644
--- a/src/librustsyntax/parse/parser.rs
+++ b/src/librustsyntax/parse/parser.rs
@@ -511,9 +511,18 @@ fn parse_path_without_tps(p: parser) -> @ast::path {
     let lo = p.span.lo;
     let global = eat(p, token::MOD_SEP);
     let mut ids = [];
-    do {
+    loop {
+        let is_not_last =
+            p.look_ahead(2u) != token::LT
+            && p.look_ahead(1u) == token::MOD_SEP;
+
         ids += [parse_ident(p)];
-    } while p.look_ahead(1u) != token::LT && eat(p, token::MOD_SEP);
+        if is_not_last {
+            expect(p, token::MOD_SEP);
+        } else {
+            break;
+        }
+    }
     @{span: mk_sp(lo, p.last_span.hi), global: global,
       idents: ids, rp: none, types: []}
 }