From c1b850d3041e5c36dc133c22b59319b179f5ddc6 Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Thu, 7 Jul 2016 04:12:20 +0000 Subject: cleanup: Refactor parser method `finish_parsing_statement` -> `parse_full_stmt`. --- src/libsyntax/parse/parser.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/libsyntax/parse') diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 454320337ed..5617d223e8c 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4044,8 +4044,8 @@ impl<'a> Parser<'a> { let mut stmts = vec![]; while !self.eat(&token::CloseDelim(token::Brace)) { - if let Some(stmt) = self.parse_stmt_() { - stmts.push(self.finish_parsing_statement(stmt)?); + if let Some(stmt) = self.parse_full_stmt()? { + stmts.push(stmt); } else if self.token == token::Eof { break; } else { @@ -4062,9 +4062,14 @@ impl<'a> Parser<'a> { })) } - /// Finish parsing expressions that start with macros and handle trailing semicolons - /// (or the lack thereof) -- c.f. `parse_stmt`. - pub fn finish_parsing_statement(&mut self, mut stmt: Stmt) -> PResult<'a, Stmt> { + /// Parse a statement, including the trailing semicolon. + /// This parses expression statements that begin with macros correctly (c.f. `parse_stmt`). + pub fn parse_full_stmt(&mut self) -> PResult<'a, Option> { + let mut stmt = match self.parse_stmt_() { + Some(stmt) => stmt, + None => return Ok(None), + }; + if let StmtKind::Mac(mac) = stmt.node { if mac.1 != MacStmtStyle::NoBraces || self.token == token::Semi || self.token == token::Eof { @@ -4078,7 +4083,8 @@ impl<'a> Parser<'a> { } } - self.handle_trailing_semicolon(stmt) + stmt = self.handle_trailing_semicolon(stmt)?; + Ok(Some(stmt)) } fn handle_trailing_semicolon(&mut self, mut stmt: Stmt) -> PResult<'a, Stmt> { -- cgit 1.4.1-3-g733a5