diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-07-13 16:04:12 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-07-13 16:04:12 -0700 |
| commit | f05dfe07f69cc126ee6c4132394b78d36e93c0d0 (patch) | |
| tree | 103467a2bb6045c76fc285f31ef7a1f1f9a8a93c /src/libsyntax/parse/parser.rs | |
| parent | 69656fa4cbafc378fd63f9186d93b0df3cdd9320 (diff) | |
| download | rust-f05dfe07f69cc126ee6c4132394b78d36e93c0d0.tar.gz rust-f05dfe07f69cc126ee6c4132394b78d36e93c0d0.zip | |
Cancel unemitted diagnostics during error recovery
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 83030e89af3..e5c8c7f3a80 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -7410,13 +7410,12 @@ impl<'a> Parser<'a> { } else if self.look_ahead(1, |t| *t == token::OpenDelim(token::Paren)) { let ident = self.parse_ident().unwrap(); self.bump(); // `(` - let kw_name = match self.parse_self_arg_with_attrs() { - Ok(Some(_)) => "method", - Ok(None) => "function", - Err(mut err) => { - err.cancel(); - "function" - } + let kw_name = if let Ok(Some(_)) = self.parse_self_arg_with_attrs() + .map_err(|mut e| e.cancel()) + { + "method" + } else { + "function" }; self.consume_block(token::Paren); let (kw, kw_name, ambiguous) = if self.check(&token::RArrow) { @@ -7464,7 +7463,9 @@ impl<'a> Parser<'a> { self.eat_to_tokens(&[&token::Gt]); self.bump(); // `>` let (kw, kw_name, ambiguous) = if self.eat(&token::OpenDelim(token::Paren)) { - if let Ok(Some(_)) = self.parse_self_arg_with_attrs() { + if let Ok(Some(_)) = self.parse_self_arg_with_attrs() + .map_err(|mut e| e.cancel()) + { ("fn", "method", false) } else { ("fn", "function", false) |
