mirror of https://github.com/rust-lang/rust.git
Only suggest turbofish in patterns if we may recover
This commit is contained in:
parent
3cd97ed3c3
commit
3ed77e98fa
|
@ -830,7 +830,8 @@ impl<'a> Parser<'a> {
|
|||
) -> PResult<'a, PatKind> {
|
||||
let ident = self.parse_ident()?;
|
||||
|
||||
if !matches!(syntax_loc, Some(PatternLocation::FunctionParameter))
|
||||
if self.may_recover()
|
||||
&& !matches!(syntax_loc, Some(PatternLocation::FunctionParameter))
|
||||
&& self.check_noexpect(&token::Lt)
|
||||
&& self.look_ahead(1, |t| t.can_begin_type())
|
||||
{
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// Regression test for issue #115780.
|
||||
// Ensure that we don't emit a parse error for the token sequence `Ident "<" Ty` in pattern position
|
||||
// if we are inside a macro call since it can be valid input for a subsequent macro rule.
|
||||
// See also #103534.
|
||||
|
||||
// check-pass
|
||||
|
||||
macro_rules! mdo {
|
||||
($p: pat =<< $e: expr ; $( $t: tt )*) => {
|
||||
$e.and_then(|$p| mdo! { $( $t )* })
|
||||
};
|
||||
(ret<$ty: ty> $e: expr;) => { Some::<$ty>($e) };
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mdo! {
|
||||
x_val =<< Some(0);
|
||||
y_val =<< Some(1);
|
||||
ret<(i32, i32)> (x_val, y_val);
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue