diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-07-09 10:31:24 +0200 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-07-28 06:53:38 +0200 |
| commit | 7aeb4b732796449237d3098f5cbe44f468fe6ef1 (patch) | |
| tree | 4479700f910785399f27f4d765d42b0bf79213f0 /src/libsyntax/parse | |
| parent | 0a40ef23ad2a1630cdc226a71bf62bb51d6a0588 (diff) | |
| download | rust-7aeb4b732796449237d3098f5cbe44f468fe6ef1.tar.gz rust-7aeb4b732796449237d3098f5cbe44f468fe6ef1.zip | |
Add more parse_*_seq methods for code reuse.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index ca066269f78..27bf9917917 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1002,6 +1002,26 @@ impl<'a> Parser<'a> { Ok((result, trailing)) } + fn parse_delim_comma_seq<T>( + &mut self, + delim: DelimToken, + f: impl FnMut(&mut Parser<'a>) -> PResult<'a, T>, + ) -> PResult<'a, (Vec<T>, bool)> { + self.parse_unspanned_seq( + &token::OpenDelim(delim), + &token::CloseDelim(delim), + SeqSep::trailing_allowed(token::Comma), + f, + ) + } + + fn parse_paren_comma_seq<T>( + &mut self, + f: impl FnMut(&mut Parser<'a>) -> PResult<'a, T>, + ) -> PResult<'a, (Vec<T>, bool)> { + self.parse_delim_comma_seq(token::Paren, f) + } + /// Advance the parser by one token pub fn bump(&mut self) { if self.prev_token_kind == PrevTokenKind::Eof { @@ -2628,6 +2648,10 @@ impl<'a> Parser<'a> { return Ok(e); } + fn parse_paren_expr_seq(&mut self) -> PResult<'a, Vec<P<Expr>>> { + self.parse_paren_comma_seq(|p| p.parse_expr()).map(|(r, _)| r) + } + crate fn process_potential_macro_variable(&mut self) { self.token = match self.token.kind { token::Dollar if self.token.span.ctxt() != SyntaxContext::empty() && |
