diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2023-11-06 21:06:20 +0000 | 
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2023-11-29 18:47:31 +0000 | 
| commit | ed084a93433d214edae3ee739444cbd442baf6fc (patch) | |
| tree | 28af6542a71aacf116e5a6b51eb6c3166497ef29 /compiler | |
| parent | 44fd3b4d4648c9ea2dfa052fe5d3dbb2dfb4f492 (diff) | |
| download | rust-ed084a93433d214edae3ee739444cbd442baf6fc.tar.gz rust-ed084a93433d214edae3ee739444cbd442baf6fc.zip | |
When parsing patterns, bubble all errors except reserved idents that aren't likely to appear in for head or match arm
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_parse/src/parser/pat.rs | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/compiler/rustc_parse/src/parser/pat.rs b/compiler/rustc_parse/src/parser/pat.rs index ff36ac952ad..ec7c312d03f 100644 --- a/compiler/rustc_parse/src/parser/pat.rs +++ b/compiler/rustc_parse/src/parser/pat.rs @@ -141,7 +141,19 @@ impl<'a> Parser<'a> { }; // Parse the first pattern (`p_0`). - let mut first_pat = self.parse_pat_no_top_alt(expected, syntax_loc)?; + let mut first_pat = match self.parse_pat_no_top_alt(expected, syntax_loc) { + Ok(pat) => pat, + Err(mut err) + if self.token.is_reserved_ident() + && !self.token.is_keyword(kw::In) + && !self.token.is_keyword(kw::If) => + { + err.emit(); + self.bump(); + self.mk_pat(self.token.span, PatKind::Wild) + } + Err(err) => return Err(err), + }; if rc == RecoverComma::Yes { self.maybe_recover_unexpected_comma( first_pat.span, | 
