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
This commit is contained in:
Brian Anderson 2012-04-27 12:22:42 -07:00
parent beece25abe
commit 8ab9efe262

View File

@ -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: []}
}