Skip to content

Commit 1744f55

Browse files
committed
Refactor away GraphBuilder
1 parent 0bed9ae commit 1744f55

File tree

2 files changed

+11
-38
lines changed

2 files changed

+11
-38
lines changed

src/librustc_resolve/build_reduced_graph.rs

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,6 @@ use rustc_front::hir::{PathListIdent, PathListMod, StmtDecl};
4343
use rustc_front::hir::{Variant, ViewPathGlob, ViewPathList, ViewPathSimple};
4444
use rustc_front::intravisit::{self, Visitor};
4545

46-
use std::ops::{Deref, DerefMut};
47-
48-
struct GraphBuilder<'a, 'b: 'a, 'tcx: 'b> {
49-
resolver: &'a mut Resolver<'b, 'tcx>,
50-
}
51-
52-
impl<'a, 'b:'a, 'tcx:'b> Deref for GraphBuilder<'a, 'b, 'tcx> {
53-
type Target = Resolver<'b, 'tcx>;
54-
55-
fn deref(&self) -> &Resolver<'b, 'tcx> {
56-
&*self.resolver
57-
}
58-
}
59-
60-
impl<'a, 'b:'a, 'tcx:'b> DerefMut for GraphBuilder<'a, 'b, 'tcx> {
61-
fn deref_mut(&mut self) -> &mut Resolver<'b, 'tcx> {
62-
&mut *self.resolver
63-
}
64-
}
65-
6646
trait ToNameBinding<'a> {
6747
fn to_name_binding(self) -> NameBinding<'a>;
6848
}
@@ -80,12 +60,12 @@ impl<'a> ToNameBinding<'a> for (Def, Span, DefModifiers) {
8060
}
8161
}
8262

83-
impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
63+
impl<'b, 'tcx:'b> Resolver<'b, 'tcx> {
8464
/// Constructs the reduced graph for the entire crate.
85-
fn build_reduced_graph(self, krate: &hir::Crate) {
65+
pub fn build_reduced_graph(&mut self, krate: &hir::Crate) {
8666
let mut visitor = BuildReducedGraphVisitor {
8767
parent: self.graph_root,
88-
builder: self,
68+
resolver: self,
8969
};
9070
intravisit::walk_crate(&mut visitor, krate);
9171
}
@@ -573,50 +553,43 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
573553
module_.add_import_directive(directive);
574554
self.unresolved_imports += 1;
575555
}
576-
}
577556

578-
impl<'a, 'tcx> Resolver<'a, 'tcx> {
579557
/// Ensures that the reduced graph rooted at the given external module
580558
/// is built, building it if it is not.
581-
pub fn populate_module_if_necessary(&mut self, module: Module<'a>) {
559+
pub fn populate_module_if_necessary(&mut self, module: Module<'b>) {
582560
if module.populated.get() { return }
583-
let mut builder = GraphBuilder { resolver: self };
584561
for child in self.session.cstore.item_children(module.def_id().unwrap()) {
585-
builder.build_reduced_graph_for_external_crate_def(module, child);
562+
self.build_reduced_graph_for_external_crate_def(module, child);
586563
}
587564
module.populated.set(true)
588565
}
589566
}
590567

591568
struct BuildReducedGraphVisitor<'a, 'b: 'a, 'tcx: 'b> {
592-
builder: GraphBuilder<'a, 'b, 'tcx>,
569+
resolver: &'a mut Resolver<'b, 'tcx>,
593570
parent: Module<'b>,
594571
}
595572

596573
impl<'a, 'b, 'v, 'tcx> Visitor<'v> for BuildReducedGraphVisitor<'a, 'b, 'tcx> {
597574
fn visit_nested_item(&mut self, item: hir::ItemId) {
598-
self.visit_item(self.builder.resolver.ast_map.expect_item(item.id))
575+
self.visit_item(self.resolver.ast_map.expect_item(item.id))
599576
}
600577

601578
fn visit_item(&mut self, item: &Item) {
602579
let old_parent = self.parent;
603-
self.builder.build_reduced_graph_for_item(item, &mut self.parent);
580+
self.resolver.build_reduced_graph_for_item(item, &mut self.parent);
604581
intravisit::walk_item(self, item);
605582
self.parent = old_parent;
606583
}
607584

608585
fn visit_foreign_item(&mut self, foreign_item: &ForeignItem) {
609-
self.builder.build_reduced_graph_for_foreign_item(foreign_item, &self.parent);
586+
self.resolver.build_reduced_graph_for_foreign_item(foreign_item, &self.parent);
610587
}
611588

612589
fn visit_block(&mut self, block: &Block) {
613590
let old_parent = self.parent;
614-
self.builder.build_reduced_graph_for_block(block, &mut self.parent);
591+
self.resolver.build_reduced_graph_for_block(block, &mut self.parent);
615592
intravisit::walk_block(self, block);
616593
self.parent = old_parent;
617594
}
618595
}
619-
620-
pub fn build_reduced_graph(resolver: &mut Resolver, krate: &hir::Crate) {
621-
GraphBuilder { resolver: resolver }.build_reduced_graph(krate);
622-
}

src/librustc_resolve/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3734,7 +3734,7 @@ pub fn create_resolver<'a, 'tcx>(session: &'a Session,
37343734

37353735
resolver.callback = callback;
37363736

3737-
build_reduced_graph::build_reduced_graph(&mut resolver, krate);
3737+
resolver.build_reduced_graph(krate);
37383738

37393739
resolve_imports::resolve_imports(&mut resolver);
37403740

0 commit comments

Comments
 (0)