Skip to content

Commit 218e35e

Browse files
committed
eat CloseDelim
1 parent 80c2101 commit 218e35e

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5385,11 +5385,16 @@ impl<'a> Parser<'a> {
53855385

53865386
fn parse_fn_args(&mut self, named_args: bool, allow_variadic: bool)
53875387
-> PResult<'a, (Vec<Arg> , bool)> {
5388+
self.expect(&token::OpenDelim(token::Paren))?;
5389+
5390+
if let Ok(Some(_)) = self.parse_self_arg() {
5391+
return Err(self.fatal("unexpected `self` argument in bare function"))
5392+
}
5393+
53885394
let sp = self.span;
53895395
let mut variadic = false;
53905396
let args: Vec<Option<Arg>> =
5391-
self.parse_unspanned_seq(
5392-
&token::OpenDelim(token::Paren),
5397+
self.parse_seq_to_before_end(
53935398
&token::CloseDelim(token::Paren),
53945399
SeqSep::trailing_allowed(token::Comma),
53955400
|p| {
@@ -5436,6 +5441,8 @@ impl<'a> Parser<'a> {
54365441
}
54375442
)?;
54385443

5444+
self.eat(&token::CloseDelim(token::Paren));
5445+
54395446
let args: Vec<_> = args.into_iter().filter_map(|x| x).collect();
54405447

54415448
if variadic && args.is_empty() {

src/test/ui/bare-function-self.stderr

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
error: unexpected `self` argument in bare function
2+
--> $DIR/bare-function-self.rs:12:11
3+
|
4+
LL | fn a(&self) { }
5+
| ^
6+
7+
error: aborting due to previous error
8+

0 commit comments

Comments
 (0)