diff options
| author | Axary <bastian_kauschke@hotmail.de> | 2018-11-16 13:54:49 +0100 |
|---|---|---|
| committer | Axary <bastian_kauschke@hotmail.de> | 2018-11-16 13:54:49 +0100 |
| commit | 218e35efa1500be4ebc1ee5d84a4e6971352c500 (patch) | |
| tree | 0993aeb01274c8606eb48a430bc97a6cdef9c49a /src/libsyntax | |
| parent | 80c2101b2042ba9ba3e4c7b2351ec45867965338 (diff) | |
| download | rust-218e35efa1500be4ebc1ee5d84a4e6971352c500.tar.gz rust-218e35efa1500be4ebc1ee5d84a4e6971352c500.zip | |
eat CloseDelim
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index d90ec4ea081..dd1864ce124 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5385,11 +5385,16 @@ impl<'a> Parser<'a> { fn parse_fn_args(&mut self, named_args: bool, allow_variadic: bool) -> PResult<'a, (Vec<Arg> , bool)> { + self.expect(&token::OpenDelim(token::Paren))?; + + if let Ok(Some(_)) = self.parse_self_arg() { + return Err(self.fatal("unexpected `self` argument in bare function")) + } + let sp = self.span; let mut variadic = false; let args: Vec<Option<Arg>> = - self.parse_unspanned_seq( - &token::OpenDelim(token::Paren), + self.parse_seq_to_before_end( &token::CloseDelim(token::Paren), SeqSep::trailing_allowed(token::Comma), |p| { @@ -5436,6 +5441,8 @@ impl<'a> Parser<'a> { } )?; + self.eat(&token::CloseDelim(token::Paren)); + let args: Vec<_> = args.into_iter().filter_map(|x| x).collect(); if variadic && args.is_empty() { |
