1
Fork 0

Add suggestion for removing invalid path separator :: in function definition.

for example: `fn invalid_path_separator::<T>() {}`

fixes: #130791
This commit is contained in:
surechen 2024-09-26 12:35:44 +08:00
parent 1b5aa96d60
commit d0165956fe
6 changed files with 46 additions and 0 deletions

View file

@ -1755,6 +1755,14 @@ pub(crate) struct MissingFnParams {
pub span: Span,
}
#[derive(Diagnostic)]
#[diag(parse_invalid_path_sep_in_fn_definition)]
pub(crate) struct InvalidPathSepInFnDefinition {
#[primary_span]
#[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
pub span: Span,
}
#[derive(Diagnostic)]
#[diag(parse_missing_trait_in_trait_impl)]
pub(crate) struct MissingTraitInTraitImpl {

View file

@ -269,6 +269,13 @@ impl<'a> Parser<'a> {
/// | ( < lifetimes , typaramseq ( , )? > )
/// where typaramseq = ( typaram ) | ( typaram , typaramseq )
pub(super) fn parse_generics(&mut self) -> PResult<'a, ast::Generics> {
// invalid path separator `::` in function definition
// for example `fn invalid_path_separator::<T>() {}`
if self.eat_noexpect(&token::PathSep) {
self.dcx()
.emit_err(errors::InvalidPathSepInFnDefinition { span: self.prev_token.span });
}
let span_lo = self.token.span;
let (params, span) = if self.eat_lt() {
let params = self.parse_generic_params()?;