1
+ use rustc_ast as ast;
1
2
use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
2
3
use rustc_data_structures:: sync:: { self , Lrc } ;
3
4
use rustc_driver:: abort_on_err;
4
5
use rustc_errors:: emitter:: { Emitter , EmitterWriter } ;
5
6
use rustc_errors:: json:: JsonEmitter ;
6
7
use rustc_feature:: UnstableFeatures ;
7
- use rustc_hir:: def:: Namespace :: TypeNS ;
8
8
use rustc_hir:: def:: Res ;
9
- use rustc_hir:: def_id:: { DefId , LocalDefId , CRATE_DEF_INDEX } ;
9
+ use rustc_hir:: def_id:: { DefId , LocalDefId } ;
10
10
use rustc_hir:: HirId ;
11
11
use rustc_hir:: {
12
12
intravisit:: { self , NestedVisitorMap , Visitor } ,
@@ -23,7 +23,7 @@ use rustc_session::DiagnosticOutput;
23
23
use rustc_session:: Session ;
24
24
use rustc_span:: source_map;
25
25
use rustc_span:: symbol:: sym;
26
- use rustc_span:: { Span , DUMMY_SP } ;
26
+ use rustc_span:: Span ;
27
27
28
28
use std:: cell:: RefCell ;
29
29
use std:: mem;
@@ -301,41 +301,16 @@ crate fn create_config(
301
301
}
302
302
303
303
crate fn create_resolver < ' a > (
304
- externs : config:: Externs ,
305
304
queries : & Queries < ' a > ,
306
305
sess : & Session ,
307
306
) -> 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) ;
336
312
337
- // Now we're good to clone the resolver because everything should be loaded
338
- resolver. clone ( )
313
+ loader. resolver
339
314
}
340
315
341
316
crate fn run_global_ctxt (
0 commit comments