Update trans/save's span hacks for fully qualified UFCS paths.

This commit is contained in:
Eduard Burtescu 2015-02-20 18:33:29 +02:00
parent 9ac073604c
commit f0efa2d843

View file

@ -238,6 +238,7 @@ impl<'a> SpanUtils<'a> {
let mut toks = self.retokenise_span(span);
// We keep track of how many brackets we're nested in
let mut bracket_count = 0;
let mut found_ufcs_sep = false;
loop {
let ts = toks.real_token();
if ts.tok == token::Eof {
@ -254,13 +255,20 @@ impl<'a> SpanUtils<'a> {
}
bracket_count += match ts.tok {
token::Lt => 1,
token::Gt => -1,
token::Gt => {
// Ignore the `>::` in `<Type as Trait>::AssocTy`.
if !found_ufcs_sep && bracket_count == 0 {
found_ufcs_sep = true;
0
} else {
-1
}
}
token::BinOp(token::Shl) => 2,
token::BinOp(token::Shr) => -2,
_ => 0
};
if ts.tok.is_ident() &&
bracket_count == nesting {
if ts.tok.is_ident() && bracket_count == nesting {
result.push(self.make_sub_span(span, Some(ts.sp)).unwrap());
}
}