mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
Rollup merge of #87646 - JohnTitor:fix-parser-ice, r=oli-obk
Fix a parser ICE on invalid `fn` body Fixes #87635 A better fix would add a check for `fn` body on `expected_one_of_not_found` but I haven't come up with a graceful way. Any idea? r? ```@oli-obk``` ```@estebank```
This commit is contained in:
commit
f69daa2617
@ -1714,13 +1714,11 @@ impl<'a> Parser<'a> {
|
||||
// the AST for typechecking.
|
||||
err.span_label(ident.span, "while parsing this `fn`");
|
||||
err.emit();
|
||||
(Vec::new(), None)
|
||||
} else {
|
||||
return Err(err);
|
||||
}
|
||||
} else {
|
||||
unreachable!()
|
||||
}
|
||||
(Vec::new(), None)
|
||||
};
|
||||
attrs.extend(inner_attrs);
|
||||
Ok(body)
|
||||
|
9
src/test/ui/parser/issue-87635.rs
Normal file
9
src/test/ui/parser/issue-87635.rs
Normal file
@ -0,0 +1,9 @@
|
||||
struct Foo {}
|
||||
|
||||
impl Foo {
|
||||
pub fn bar()
|
||||
//~^ ERROR: expected `;`, found `}`
|
||||
//~| ERROR: associated function in `impl` without body
|
||||
}
|
||||
|
||||
fn main() {}
|
19
src/test/ui/parser/issue-87635.stderr
Normal file
19
src/test/ui/parser/issue-87635.stderr
Normal file
@ -0,0 +1,19 @@
|
||||
error: expected `;`, found `}`
|
||||
--> $DIR/issue-87635.rs:4:17
|
||||
|
|
||||
LL | pub fn bar()
|
||||
| ^ help: add `;` here
|
||||
...
|
||||
LL | }
|
||||
| - unexpected token
|
||||
|
||||
error: associated function in `impl` without body
|
||||
--> $DIR/issue-87635.rs:4:5
|
||||
|
|
||||
LL | pub fn bar()
|
||||
| ^^^^^^^^^^^-
|
||||
| |
|
||||
| help: provide a definition for the function: `{ <body> }`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user