8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- use rustc:: dep_graph:: DepGraph ;
12
11
use rustc:: hir;
13
12
use rustc:: hir:: { map as hir_map, FreevarMap , TraitMap } ;
14
13
use rustc:: hir:: def:: DefMap ;
@@ -27,7 +26,7 @@ use rustc::util::nodemap::NodeSet;
27
26
use rustc_back:: sha2:: { Sha256 , Digest } ;
28
27
use rustc_borrowck as borrowck;
29
28
use rustc_incremental;
30
- use rustc_resolve as resolve ;
29
+ use rustc_resolve:: { MakeGlobMap , Resolver } ;
31
30
use rustc_metadata:: macro_import;
32
31
use rustc_metadata:: creader:: read_local_crates;
33
32
use rustc_metadata:: cstore:: CStore ;
@@ -291,7 +290,7 @@ pub struct CompileController<'a> {
291
290
pub after_analysis : PhaseController < ' a > ,
292
291
pub after_llvm : PhaseController < ' a > ,
293
292
294
- pub make_glob_map : resolve :: MakeGlobMap ,
293
+ pub make_glob_map : MakeGlobMap ,
295
294
}
296
295
297
296
impl < ' a > CompileController < ' a > {
@@ -303,7 +302,7 @@ impl<'a> CompileController<'a> {
303
302
after_hir_lowering : PhaseController :: basic ( ) ,
304
303
after_analysis : PhaseController :: basic ( ) ,
305
304
after_llvm : PhaseController :: basic ( ) ,
306
- make_glob_map : resolve :: MakeGlobMap :: No ,
305
+ make_glob_map : MakeGlobMap :: No ,
307
306
}
308
307
}
309
308
}
@@ -562,7 +561,7 @@ pub fn phase_2_configure_and_expand<'a>(sess: &Session,
562
561
mut krate : ast:: Crate ,
563
562
crate_name : & ' a str ,
564
563
addl_plugins : Option < Vec < String > > ,
565
- make_glob_map : resolve :: MakeGlobMap )
564
+ make_glob_map : MakeGlobMap )
566
565
-> Result < ExpansionResult < ' a > , usize > {
567
566
let time_passes = sess. time_passes ( ) ;
568
567
@@ -728,7 +727,7 @@ pub fn phase_2_configure_and_expand<'a>(sess: &Session,
728
727
krate = assign_node_ids ( sess, krate) ;
729
728
730
729
// Collect defintions for def ids.
731
- let mut defs =
730
+ let defs =
732
731
time ( sess. time_passes ( ) , "collecting defs" , || hir_map:: collect_definitions ( & krate) ) ;
733
732
734
733
time ( sess. time_passes ( ) ,
@@ -743,8 +742,17 @@ pub fn phase_2_configure_and_expand<'a>(sess: &Session,
743
742
"AST validation" ,
744
743
|| ast_validation:: check_crate ( sess, & krate) ) ;
745
744
746
- let ( analysis, resolutions, hir_forest) =
747
- lower_and_resolve ( sess, crate_name, & mut defs, & krate, & sess. dep_graph , make_glob_map) ;
745
+ let resolver_arenas = Resolver :: arenas ( ) ;
746
+ let mut resolver = Resolver :: new ( sess, defs, make_glob_map, & resolver_arenas) ;
747
+
748
+ time ( sess. time_passes ( ) , "name resolution" , || {
749
+ resolver. resolve_crate ( & krate) ;
750
+ } ) ;
751
+
752
+ // Lower ast -> hir.
753
+ let hir_forest = time ( sess. time_passes ( ) , "lowering ast -> hir" , || {
754
+ hir_map:: Forest :: new ( lower_crate ( sess, & krate, & mut resolver) , & sess. dep_graph )
755
+ } ) ;
748
756
749
757
// Discard MTWT tables that aren't required past lowering to HIR.
750
758
if !keep_mtwt_tables ( sess) {
@@ -753,9 +761,20 @@ pub fn phase_2_configure_and_expand<'a>(sess: &Session,
753
761
754
762
Ok ( ExpansionResult {
755
763
expanded_crate : krate,
756
- defs : defs,
757
- analysis : analysis,
758
- resolutions : resolutions,
764
+ defs : resolver. definitions ,
765
+ analysis : ty:: CrateAnalysis {
766
+ export_map : resolver. export_map ,
767
+ access_levels : AccessLevels :: default ( ) ,
768
+ reachable : NodeSet ( ) ,
769
+ name : crate_name,
770
+ glob_map : if resolver. make_glob_map { Some ( resolver. glob_map ) } else { None } ,
771
+ } ,
772
+ resolutions : Resolutions {
773
+ def_map : resolver. def_map ,
774
+ freevars : resolver. freevars ,
775
+ trait_map : resolver. trait_map ,
776
+ maybe_unused_trait_imports : resolver. maybe_unused_trait_imports ,
777
+ } ,
759
778
hir_forest : hir_forest
760
779
} )
761
780
}
@@ -807,38 +826,6 @@ pub fn assign_node_ids(sess: &Session, krate: ast::Crate) -> ast::Crate {
807
826
krate
808
827
}
809
828
810
- pub fn lower_and_resolve < ' a > ( sess : & Session ,
811
- id : & ' a str ,
812
- defs : & mut hir_map:: Definitions ,
813
- krate : & ast:: Crate ,
814
- dep_graph : & DepGraph ,
815
- make_glob_map : resolve:: MakeGlobMap )
816
- -> ( ty:: CrateAnalysis < ' a > , Resolutions , hir_map:: Forest ) {
817
- resolve:: with_resolver ( sess, defs, make_glob_map, |mut resolver| {
818
- time ( sess. time_passes ( ) , "name resolution" , || {
819
- resolve:: resolve_crate ( & mut resolver, krate) ;
820
- } ) ;
821
-
822
- // Lower ast -> hir.
823
- let hir_forest = time ( sess. time_passes ( ) , "lowering ast -> hir" , || {
824
- hir_map:: Forest :: new ( lower_crate ( sess, krate, & mut resolver) , dep_graph)
825
- } ) ;
826
-
827
- ( ty:: CrateAnalysis {
828
- export_map : resolver. export_map ,
829
- access_levels : AccessLevels :: default ( ) ,
830
- reachable : NodeSet ( ) ,
831
- name : & id,
832
- glob_map : if resolver. make_glob_map { Some ( resolver. glob_map ) } else { None } ,
833
- } , Resolutions {
834
- def_map : resolver. def_map ,
835
- freevars : resolver. freevars ,
836
- trait_map : resolver. trait_map ,
837
- maybe_unused_trait_imports : resolver. maybe_unused_trait_imports ,
838
- } , hir_forest)
839
- } )
840
- }
841
-
842
829
/// Run the resolution, typechecking, region checking and other
843
830
/// miscellaneous analysis passes on the crate. Return various
844
831
/// structures carrying the results of the analysis.
0 commit comments