diff options
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 84572b84963..7b09a44b814 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -118,12 +118,18 @@ impl<'a> MacResult for ParserAnyMacro<'a> { fn make_stmts(self: Box<ParserAnyMacro<'a>>) -> Option<SmallVector<ast::Stmt>> { + let parse_stmt = |parser: &mut Parser<'a>| -> ::parse::PResult<'a, _> { + Ok(match parser.parse_stmt()? { + Some(stmt) => Some(parser.finish_parsing_statement(stmt)?), + None => None, + }) + }; let mut ret = SmallVector::zero(); loop { let mut parser = self.parser.borrow_mut(); match parser.token { token::Eof => break, - _ => match parser.parse_stmt() { + _ => match parse_stmt(&mut parser) { Ok(maybe_stmt) => match maybe_stmt { Some(stmt) => ret.push(stmt), None => (), |
