Fix a parser ICE on invalid fn body

This commit is contained in:
Yuki Okushi 2021-07-31 06:09:54 +09:00
parent f3f8e758f2
commit d2d851949b
No known key found for this signature in database
GPG key ID: DABA5B072961C18A
3 changed files with 29 additions and 3 deletions

View file

@ -1715,13 +1715,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)

View file

@ -0,0 +1,9 @@
struct Foo {}
impl Foo {
pub fn bar()
//~^ ERROR: expected `;`, found `}`
//~| ERROR: associated function in `impl` without body
}
fn main() {}

View 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