diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-07-13 16:18:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-13 16:18:38 +0200 |
| commit | 4fe6e63cd60ade52cd24616e17de5c570b06b0e7 (patch) | |
| tree | 471a5bc275f28abb2c7c11b930774b9ab10eb7bd | |
| parent | 833dada10632814723426f07c53c9913dfec50c3 (diff) | |
| parent | e1c7747cf06bc063a6586c1eab898703f61899d8 (diff) | |
| download | rust-4fe6e63cd60ade52cd24616e17de5c570b06b0e7.tar.gz rust-4fe6e63cd60ade52cd24616e17de5c570b06b0e7.zip | |
Rollup merge of #62604 - estebank:unemitted-err-ice, r=pnkfelix
Handle errors during error recovery gracefully Fix #62546.
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/parser/issue-62546.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/parser/issue-62546.stderr | 17 |
3 files changed, 27 insertions, 4 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index e0633f73ac4..83030e89af3 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -7410,10 +7410,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) { diff --git a/src/test/ui/parser/issue-62546.rs b/src/test/ui/parser/issue-62546.rs new file mode 100644 index 00000000000..75b95e74073 --- /dev/null +++ b/src/test/ui/parser/issue-62546.rs @@ -0,0 +1,3 @@ +pub t(# +//~^ ERROR missing `fn` or `struct` for function or struct definition +//~ ERROR this file contains an un-closed delimiter diff --git a/src/test/ui/parser/issue-62546.stderr b/src/test/ui/parser/issue-62546.stderr new file mode 100644 index 00000000000..631aac95505 --- /dev/null +++ b/src/test/ui/parser/issue-62546.stderr @@ -0,0 +1,17 @@ +error: this file contains an un-closed delimiter + --> $DIR/issue-62546.rs:3:53 + | +LL | pub t(# + | - un-closed delimiter +LL | +LL | + | ^ + +error: missing `fn` or `struct` for function or struct definition + --> $DIR/issue-62546.rs:1:4 + | +LL | pub t(# + | ---^- help: if you meant to call a macro, try: `t!` + +error: aborting due to 2 previous errors + |
