Only suggest turbofish in patterns if we may recover
This commit is contained in:
parent
3cd97ed3c3
commit
3ed77e98fa
2 changed files with 23 additions and 1 deletions
|
@ -830,7 +830,8 @@ impl<'a> Parser<'a> {
|
||||||
) -> PResult<'a, PatKind> {
|
) -> PResult<'a, PatKind> {
|
||||||
let ident = self.parse_ident()?;
|
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.check_noexpect(&token::Lt)
|
||||||
&& self.look_ahead(1, |t| t.can_begin_type())
|
&& 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…
Add table
Add a link
Reference in a new issue