Suggest path separator for single-colon typos
This commit adds guidance for when a user means to type a path, but ends up typing a single colon, such as `<<Impl as T>:Ty>`. This change seemed pertinent as the current error message is particularly misleading, emitting `error: unmatched angle bracket`, despite the angle bracket being matched later on, leaving the user to track down the typo'd colon.
This commit is contained in:
parent
212b2c7da8
commit
3c91bdca1d
4 changed files with 63 additions and 1 deletions
|
@ -71,7 +71,23 @@ impl<'a> Parser<'a> {
|
|||
debug!("parse_qpath: (decrement) count={:?}", self.unmatched_angle_bracket_count);
|
||||
}
|
||||
|
||||
self.expect(&token::ModSep)?;
|
||||
let lo_colon = self.token.span;
|
||||
if self.eat(&token::Colon) {
|
||||
// <Bar as Baz<T>>:Qux
|
||||
// ^
|
||||
let span = lo_colon.to(self.prev_span);
|
||||
self.diagnostic()
|
||||
.struct_span_err(span, "found single colon where type path was expected")
|
||||
.span_suggestion(
|
||||
span,
|
||||
"use double colon",
|
||||
"::".to_string(),
|
||||
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)?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue