Skip to content

Commit 85bfd82

Browse files
committed
Avoid reconstructing the BuildReducedGraphVisitor.
1 parent a344f14 commit 85bfd82

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/librustc_resolve/build_reduced_graph.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,6 @@ impl<'b> Resolver<'b> {
300300
}
301301
ItemKind::Mac(_) => panic!("unexpanded macro in resolve!"),
302302
}
303-
304-
visit::walk_item(&mut BuildReducedGraphVisitor { resolver: self }, item);
305-
self.current_module = parent;
306303
}
307304

308305
// Constructs the reduced graph for one variant. Variants exist in the
@@ -356,9 +353,6 @@ impl<'b> Resolver<'b> {
356353
self.module_map.insert(block_id, new_module);
357354
self.current_module = new_module; // Descend into the block.
358355
}
359-
360-
visit::walk_block(&mut BuildReducedGraphVisitor { resolver: self }, block);
361-
self.current_module = parent;
362356
}
363357

364358
/// Builds the reduced graph for a single item in an external crate.
@@ -486,15 +480,21 @@ struct BuildReducedGraphVisitor<'a, 'b: 'a> {
486480

487481
impl<'a, 'b> Visitor for BuildReducedGraphVisitor<'a, 'b> {
488482
fn visit_item(&mut self, item: &Item) {
483+
let parent = self.resolver.current_module;
489484
self.resolver.build_reduced_graph_for_item(item);
485+
visit::walk_item(self, item);
486+
self.resolver.current_module = parent;
490487
}
491488

492489
fn visit_foreign_item(&mut self, foreign_item: &ForeignItem) {
493490
self.resolver.build_reduced_graph_for_foreign_item(foreign_item);
494491
}
495492

496493
fn visit_block(&mut self, block: &Block) {
494+
let parent = self.resolver.current_module;
497495
self.resolver.build_reduced_graph_for_block(block);
496+
visit::walk_block(self, block);
497+
self.resolver.current_module = parent;
498498
}
499499

500500
fn visit_trait_item(&mut self, item: &TraitItem) {

0 commit comments

Comments
 (0)