diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-02-05 15:18:29 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-02-05 15:18:29 +1100 |
| commit | 970b5d189af48dd6ec26e90bb8d6d236824edf4b (patch) | |
| tree | d2e00ee9e14277c62a121b8a5c1755639f48c4f9 /src/libsyntax/ext | |
| parent | 372fe84a8349ab4a8693d656bd786a5a47e22a56 (diff) | |
| download | rust-970b5d189af48dd6ec26e90bb8d6d236824edf4b.tar.gz rust-970b5d189af48dd6ec26e90bb8d6d236824edf4b.zip | |
Various improvements in `Folder` impls.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/ext/placeholders.rs | 15 |
2 files changed, 6 insertions, 14 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 72e0a86bf59..2effd910e85 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1247,10 +1247,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> { } fn fold_stmt(&mut self, stmt: ast::Stmt) -> SmallVec<[ast::Stmt; 1]> { - let mut stmt = match self.cfg.configure_stmt(stmt) { - Some(stmt) => stmt, - None => return SmallVec::new(), - }; + let mut stmt = configure!(self, stmt); // we'll expand attributes on expressions separately if !stmt.is_expr() { diff --git a/src/libsyntax/ext/placeholders.rs b/src/libsyntax/ext/placeholders.rs index 3b0402d910a..0928bc80404 100644 --- a/src/libsyntax/ext/placeholders.rs +++ b/src/libsyntax/ext/placeholders.rs @@ -181,17 +181,12 @@ impl<'a, 'b> Folder for PlaceholderExpander<'a, 'b> { fn fold_block(&mut self, block: P<ast::Block>) -> P<ast::Block> { noop_fold_block(block, self).map(|mut block| { - let mut remaining_stmts = block.stmts.len(); - - block.stmts = block.stmts.move_flat_map(|mut stmt| { - remaining_stmts -= 1; - + block.stmts = block.stmts.move_map(|mut stmt| { if self.monotonic { assert_eq!(stmt.id, ast::DUMMY_NODE_ID); stmt.id = self.cx.resolver.next_node_id(); } - - Some(stmt) + stmt }); block @@ -200,9 +195,9 @@ impl<'a, 'b> Folder for PlaceholderExpander<'a, 'b> { fn fold_mod(&mut self, module: ast::Mod) -> ast::Mod { let mut module = noop_fold_mod(module, self); - module.items = module.items.move_flat_map(|item| match item.node { - ast::ItemKind::Mac(_) if !self.cx.ecfg.keep_macs => None, // remove macro definitions - _ => Some(item), + module.items.retain(|item| match item.node { + ast::ItemKind::Mac(_) if !self.cx.ecfg.keep_macs => false, // remove macro definitions + _ => true, }); module } |
