@@ -157,30 +157,7 @@ pub fn compile_input(sess: &Session,
157157
158158 let ( analysis, resolutions, mut hir_forest) = {
159159 let defs = & mut * defs. borrow_mut ( ) ;
160- resolve:: with_resolver ( sess, defs, control. make_glob_map , |mut resolver| {
161- time ( sess. time_passes ( ) , "name resolution" , || {
162- resolve:: resolve_crate ( & mut resolver, & expanded_crate) ;
163- } ) ;
164-
165- // Lower ast -> hir.
166- let hir_forest = time ( sess. time_passes ( ) , "lowering ast -> hir" , || {
167- let lcx = LoweringContext :: new ( sess, Some ( & expanded_crate) , & mut resolver) ;
168- hir_map:: Forest :: new ( lower_crate ( & lcx, & expanded_crate) , dep_graph)
169- } ) ;
170-
171- ( ty:: CrateAnalysis {
172- export_map : resolver. export_map ,
173- access_levels : AccessLevels :: default ( ) ,
174- reachable : NodeSet ( ) ,
175- name : & id,
176- glob_map : if resolver. make_glob_map { Some ( resolver. glob_map ) } else { None } ,
177- } , Resolutions {
178- def_map : RefCell :: new ( resolver. def_map ) ,
179- freevars : resolver. freevars ,
180- trait_map : resolver. trait_map ,
181- maybe_unused_trait_imports : resolver. maybe_unused_trait_imports ,
182- } , hir_forest)
183- } )
160+ lower_and_resolve ( sess, & id, defs, & expanded_crate, dep_graph, control. make_glob_map )
184161 } ;
185162
186163 // Discard MTWT tables that aren't required past lowering to HIR.
@@ -796,6 +773,39 @@ pub fn assign_node_ids(sess: &Session, krate: ast::Crate) -> ast::Crate {
796773 krate
797774}
798775
776+ pub fn lower_and_resolve < ' a > ( sess : & Session ,
777+ id : & ' a str ,
778+ defs : & mut hir_map:: Definitions ,
779+ krate : & ast:: Crate ,
780+ dep_graph : DepGraph ,
781+ make_glob_map : resolve:: MakeGlobMap )
782+ -> ( ty:: CrateAnalysis < ' a > , Resolutions , hir_map:: Forest ) {
783+ resolve:: with_resolver ( sess, defs, make_glob_map, |mut resolver| {
784+ time ( sess. time_passes ( ) , "name resolution" , || {
785+ resolve:: resolve_crate ( & mut resolver, krate) ;
786+ } ) ;
787+
788+ // Lower ast -> hir.
789+ let hir_forest = time ( sess. time_passes ( ) , "lowering ast -> hir" , || {
790+ let lcx = LoweringContext :: new ( sess, Some ( krate) , & mut resolver) ;
791+ hir_map:: Forest :: new ( lower_crate ( & lcx, krate) , dep_graph)
792+ } ) ;
793+
794+ ( ty:: CrateAnalysis {
795+ export_map : resolver. export_map ,
796+ access_levels : AccessLevels :: default ( ) ,
797+ reachable : NodeSet ( ) ,
798+ name : & id,
799+ glob_map : if resolver. make_glob_map { Some ( resolver. glob_map ) } else { None } ,
800+ } , Resolutions {
801+ def_map : RefCell :: new ( resolver. def_map ) ,
802+ freevars : resolver. freevars ,
803+ trait_map : resolver. trait_map ,
804+ maybe_unused_trait_imports : resolver. maybe_unused_trait_imports ,
805+ } , hir_forest)
806+ } )
807+ }
808+
799809/// Run the resolution, typechecking, region checking and other
800810/// miscellaneous analysis passes on the crate. Return various
801811/// structures carrying the results of the analysis.
0 commit comments