diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-07-11 16:54:33 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-07-11 16:54:33 -0700 |
| commit | e1c7747cf06bc063a6586c1eab898703f61899d8 (patch) | |
| tree | 4292e0f5f00e8329a95186cc9027316087116446 /src/libsyntax/parse | |
| parent | 4bb6b4a5ed1cd377c5cfd97721ad12f52e63dd41 (diff) | |
| download | rust-e1c7747cf06bc063a6586c1eab898703f61899d8.tar.gz rust-e1c7747cf06bc063a6586c1eab898703f61899d8.zip | |
Handle errors during error recovery gracefully
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 83dbff6b2d5..6a26c4ad59b 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -7408,10 +7408,13 @@ 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 = if let Ok(Some(_)) = self.parse_self_arg_with_attrs() { - "method" - } else { - "function" + let kw_name = match self.parse_self_arg_with_attrs() { + Ok(Some(_)) => "method", + Ok(None) => "function", + Err(mut err) => { + err.cancel(); + "function" + } }; self.consume_block(token::Paren); let (kw, kw_name, ambiguous) = if self.check(&token::RArrow) { |
