restore snapshot when parse_param_general
This commit is contained in:
parent
64338796ab
commit
fe00cfef57
3 changed files with 26 additions and 0 deletions
|
@ -2494,9 +2494,11 @@ impl<'a> Parser<'a> {
|
||||||
// Parse the arguments, starting out with `self` being allowed...
|
// Parse the arguments, starting out with `self` being allowed...
|
||||||
let (mut params, _) = self.parse_paren_comma_seq(|p| {
|
let (mut params, _) = self.parse_paren_comma_seq(|p| {
|
||||||
p.recover_diff_marker();
|
p.recover_diff_marker();
|
||||||
|
let snapshot = p.create_snapshot_for_diagnostic();
|
||||||
let param = p.parse_param_general(req_name, first_param).or_else(|mut e| {
|
let param = p.parse_param_general(req_name, first_param).or_else(|mut e| {
|
||||||
e.emit();
|
e.emit();
|
||||||
let lo = p.prev_token.span;
|
let lo = p.prev_token.span;
|
||||||
|
p.restore_snapshot(snapshot);
|
||||||
// Skip every token until next possible arg or end.
|
// Skip every token until next possible arg or end.
|
||||||
p.eat_to_tokens(&[&token::Comma, &token::CloseDelim(Delimiter::Parenthesis)]);
|
p.eat_to_tokens(&[&token::Comma, &token::CloseDelim(Delimiter::Parenthesis)]);
|
||||||
// Create a placeholder argument for proper arg count (issue #34264).
|
// Create a placeholder argument for proper arg count (issue #34264).
|
||||||
|
|
8
tests/ui/parser/issue-116781.rs
Normal file
8
tests/ui/parser/issue-116781.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Foo {
|
||||||
|
#[cfg(all())]
|
||||||
|
field: fn(($),), //~ ERROR expected pattern, found `$`
|
||||||
|
//~^ ERROR expected pattern, found `$`
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
16
tests/ui/parser/issue-116781.stderr
Normal file
16
tests/ui/parser/issue-116781.stderr
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
error: expected pattern, found `$`
|
||||||
|
--> $DIR/issue-116781.rs:4:16
|
||||||
|
|
|
||||||
|
LL | field: fn(($),),
|
||||||
|
| ^ expected pattern
|
||||||
|
|
||||||
|
error: expected pattern, found `$`
|
||||||
|
--> $DIR/issue-116781.rs:4:16
|
||||||
|
|
|
||||||
|
LL | field: fn(($),),
|
||||||
|
| ^ expected pattern
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue