1+ use rustc_ast as ast;
12use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
23use rustc_data_structures:: sync:: { self , Lrc } ;
34use rustc_driver:: abort_on_err;
45use rustc_errors:: emitter:: { Emitter , EmitterWriter } ;
56use rustc_errors:: json:: JsonEmitter ;
67use rustc_feature:: UnstableFeatures ;
7- use rustc_hir:: def:: Namespace :: TypeNS ;
88use rustc_hir:: def:: Res ;
9- use rustc_hir:: def_id:: { DefId , LocalDefId , CRATE_DEF_INDEX } ;
9+ use rustc_hir:: def_id:: { DefId , LocalDefId } ;
1010use rustc_hir:: HirId ;
1111use rustc_hir:: {
1212 intravisit:: { self , NestedVisitorMap , Visitor } ,
@@ -23,7 +23,7 @@ use rustc_session::DiagnosticOutput;
2323use rustc_session:: Session ;
2424use rustc_span:: source_map;
2525use rustc_span:: symbol:: sym;
26- use rustc_span:: { Span , DUMMY_SP } ;
26+ use rustc_span:: Span ;
2727
2828use std:: cell:: RefCell ;
2929use std:: mem;
@@ -301,41 +301,16 @@ crate fn create_config(
301301}
302302
303303crate fn create_resolver < ' a > (
304- externs : config:: Externs ,
305304 queries : & Queries < ' a > ,
306305 sess : & Session ,
307306) -> Rc < RefCell < interface:: BoxedResolver > > {
308- let extern_names: Vec < String > = externs
309- . iter ( )
310- . filter ( |( _, entry) | entry. add_prelude )
311- . map ( |( name, _) | name)
312- . cloned ( )
313- . collect ( ) ;
314-
315- let ( _, resolver, _) = & * abort_on_err ( queries. expansion ( ) , sess) . peek ( ) ;
316-
317- // Before we actually clone it, let's force all the extern'd crates to
318- // actually be loaded, just in case they're only referred to inside
319- // intra-doc links
320- resolver. borrow_mut ( ) . access ( |resolver| {
321- sess. time ( "load_extern_crates" , || {
322- for extern_name in & extern_names {
323- debug ! ( "loading extern crate {}" , extern_name) ;
324- if let Err ( ( ) ) = resolver
325- . resolve_str_path_error (
326- DUMMY_SP ,
327- extern_name,
328- TypeNS ,
329- LocalDefId { local_def_index : CRATE_DEF_INDEX } . to_def_id ( ) ,
330- ) {
331- warn ! ( "unable to resolve external crate {} (do you have an unused `--extern` crate?)" , extern_name)
332- }
333- }
334- } ) ;
335- } ) ;
307+ let ( krate, resolver, _) = & * abort_on_err ( queries. expansion ( ) , sess) . peek ( ) ;
308+ let resolver = resolver. clone ( ) ;
309+
310+ let mut loader = crate :: passes:: collect_intra_doc_links:: IntraLinkCrateLoader :: new ( resolver) ;
311+ ast:: visit:: walk_crate ( & mut loader, krate) ;
336312
337- // Now we're good to clone the resolver because everything should be loaded
338- resolver. clone ( )
313+ loader. resolver
339314}
340315
341316crate fn run_global_ctxt (
0 commit comments