From 8ab9efe262d20be8efc90535aeaf4ed9af47f400 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 27 Apr 2012 12:22:42 -0700 Subject: [PATCH] parser: Rewrite parse_path_without_tps so it knows beforehand which is the last ident Needed to centralize all keyword-as-value parsing in parse_value_ident --- src/librustsyntax/parse/parser.rs | 13 +++++++++++-- 1 file 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: []} }