Suggests turbofish in patterns
This commit is contained in:
parent
b969b830aa
commit
049c728c60
18 changed files with 101 additions and 50 deletions
|
@ -805,6 +805,7 @@ impl<'a> Parser<'a> {
|
|||
| token::DotDotDot | token::DotDotEq | token::DotDot // A range pattern.
|
||||
| token::ModSep // A tuple / struct variant pattern.
|
||||
| token::Not)) // A macro expanding to a pattern.
|
||||
&& !(self.look_ahead(1, |t| t.kind == token::Lt) && self.look_ahead(2, |t| t.can_begin_type())) // May suggest the turbofish syntax for generics, only valid for recoveries.
|
||||
}
|
||||
|
||||
/// Parses `ident` or `ident @ pat`.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use super::ty::{AllowPlus, RecoverQPath, RecoverReturnSign};
|
||||
use super::{Parser, Restrictions, TokenType};
|
||||
use crate::errors::PathSingleColon;
|
||||
use crate::errors::{GenericArgsInPatRequireTurbofishSyntax, PathSingleColon};
|
||||
use crate::{errors, maybe_whole};
|
||||
use rustc_ast::ptr::P;
|
||||
use rustc_ast::token::{self, Delimiter, Token, TokenKind};
|
||||
|
@ -382,6 +382,14 @@ impl<'a> Parser<'a> {
|
|||
};
|
||||
|
||||
PathSegment { ident, args: Some(args), id: ast::DUMMY_NODE_ID }
|
||||
} else if style == PathStyle::Pat
|
||||
&& self.check_noexpect(&token::Lt)
|
||||
&& self.look_ahead(1, |t| t.can_begin_type())
|
||||
{
|
||||
return Err(self.sess.create_err(GenericArgsInPatRequireTurbofishSyntax {
|
||||
span: self.token.span,
|
||||
suggest_turbofish: self.token.span.shrink_to_lo(),
|
||||
}));
|
||||
} else {
|
||||
// Generic arguments are not found.
|
||||
PathSegment::from_ident(ident)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue