1
Fork 0

Move colon-check to recover_colon_before_qpath_proj()

This commit is contained in:
Rob Pilling 2020-02-01 19:10:42 +00:00
parent 88d64a0931
commit 45fb7232ab

View file

@ -71,7 +71,21 @@ impl<'a> Parser<'a> {
debug!("parse_qpath: (decrement) count={:?}", self.unmatched_angle_bracket_count);
}
if self.token.kind == token::Colon {
if !self.recover_colon_before_qpath_proj() {
self.expect(&token::ModSep)?;
}
let qself = QSelf { ty, path_span, position: path.segments.len() };
self.parse_path_segments(&mut path.segments, style)?;
Ok((qself, Path { segments: path.segments, span: lo.to(self.prev_span) }))
}
fn recover_colon_before_qpath_proj(&mut self) -> bool {
if self.token.kind != token::Colon {
return false;
}
// <Bar as Baz<T>>:Qux
// ^
self.bump();
@ -85,14 +99,8 @@ impl<'a> Parser<'a> {
Applicability::MachineApplicable,
)
.emit();
} else {
self.expect(&token::ModSep)?;
}
let qself = QSelf { ty, path_span, position: path.segments.len() };
self.parse_path_segments(&mut path.segments, style)?;
Ok((qself, Path { segments: path.segments, span: lo.to(self.prev_span) }))
true
}
/// Parses simple paths.