@@ -43,26 +43,6 @@ use rustc_front::hir::{PathListIdent, PathListMod, StmtDecl};
43
43
use rustc_front:: hir:: { Variant , ViewPathGlob , ViewPathList , ViewPathSimple } ;
44
44
use rustc_front:: intravisit:: { self , Visitor } ;
45
45
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
-
66
46
trait ToNameBinding < ' a > {
67
47
fn to_name_binding ( self ) -> NameBinding < ' a > ;
68
48
}
@@ -80,12 +60,12 @@ impl<'a> ToNameBinding<'a> for (Def, Span, DefModifiers) {
80
60
}
81
61
}
82
62
83
- impl < ' a , ' b : ' a , ' tcx : ' b > GraphBuilder < ' a , ' b , ' tcx > {
63
+ impl < ' b , ' tcx : ' b > Resolver < ' b , ' tcx > {
84
64
/// 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 ) {
86
66
let mut visitor = BuildReducedGraphVisitor {
87
67
parent : self . graph_root ,
88
- builder : self ,
68
+ resolver : self ,
89
69
} ;
90
70
intravisit:: walk_crate ( & mut visitor, krate) ;
91
71
}
@@ -573,50 +553,43 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
573
553
module_. add_import_directive ( directive) ;
574
554
self . unresolved_imports += 1 ;
575
555
}
576
- }
577
556
578
- impl < ' a , ' tcx > Resolver < ' a , ' tcx > {
579
557
/// Ensures that the reduced graph rooted at the given external module
580
558
/// 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 > ) {
582
560
if module. populated . get ( ) { return }
583
- let mut builder = GraphBuilder { resolver : self } ;
584
561
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) ;
586
563
}
587
564
module. populated . set ( true )
588
565
}
589
566
}
590
567
591
568
struct BuildReducedGraphVisitor < ' a , ' b : ' a , ' tcx : ' b > {
592
- builder : GraphBuilder < ' a , ' b , ' tcx > ,
569
+ resolver : & ' a mut Resolver < ' b , ' tcx > ,
593
570
parent : Module < ' b > ,
594
571
}
595
572
596
573
impl < ' a , ' b , ' v , ' tcx > Visitor < ' v > for BuildReducedGraphVisitor < ' a , ' b , ' tcx > {
597
574
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 ) )
599
576
}
600
577
601
578
fn visit_item ( & mut self , item : & Item ) {
602
579
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 ) ;
604
581
intravisit:: walk_item ( self , item) ;
605
582
self . parent = old_parent;
606
583
}
607
584
608
585
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 ) ;
610
587
}
611
588
612
589
fn visit_block ( & mut self , block : & Block ) {
613
590
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 ) ;
615
592
intravisit:: walk_block ( self , block) ;
616
593
self . parent = old_parent;
617
594
}
618
595
}
619
-
620
- pub fn build_reduced_graph ( resolver : & mut Resolver , krate : & hir:: Crate ) {
621
- GraphBuilder { resolver : resolver } . build_reduced_graph ( krate) ;
622
- }
0 commit comments