@@ -343,153 +343,151 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
343
343
registry : rustc_driver:: diagnostics_registry ( ) ,
344
344
} ;
345
345
346
- interface:: run_compiler_in_existing_thread_pool ( config, |compiler| {
347
- compiler. enter ( |queries| {
348
- let sess = compiler. session ( ) ;
349
-
350
- // We need to hold on to the complete resolver, so we cause everything to be
351
- // cloned for the analysis passes to use. Suboptimal, but necessary in the
352
- // current architecture.
353
- let resolver = {
354
- let parts = abort_on_err ( queries. expansion ( ) , sess) . peek ( ) ;
355
- let resolver = parts. 1 . borrow ( ) ;
356
-
357
- // Before we actually clone it, let's force all the extern'd crates to
358
- // actually be loaded, just in case they're only referred to inside
359
- // intra-doc-links
360
- resolver. borrow_mut ( ) . access ( |resolver| {
361
- for extern_name in & extern_names {
362
- resolver. resolve_str_path_error (
363
- DUMMY_SP , extern_name, TypeNS , CRATE_NODE_ID
364
- ) . unwrap_or_else (
365
- |( ) | panic ! ( "Unable to resolve external crate {}" , extern_name)
366
- ) ;
367
- }
368
- } ) ;
346
+ interface:: run_compiler_in_existing_thread_pool ( config, |compiler| { compiler. enter ( |queries| {
347
+ let sess = compiler. session ( ) ;
348
+
349
+ // We need to hold on to the complete resolver, so we cause everything to be
350
+ // cloned for the analysis passes to use. Suboptimal, but necessary in the
351
+ // current architecture.
352
+ let resolver = {
353
+ let parts = abort_on_err ( queries. expansion ( ) , sess) . peek ( ) ;
354
+ let resolver = parts. 1 . borrow ( ) ;
355
+
356
+ // Before we actually clone it, let's force all the extern'd crates to
357
+ // actually be loaded, just in case they're only referred to inside
358
+ // intra-doc-links
359
+ resolver. borrow_mut ( ) . access ( |resolver| {
360
+ for extern_name in & extern_names {
361
+ resolver. resolve_str_path_error (
362
+ DUMMY_SP , extern_name, TypeNS , CRATE_NODE_ID
363
+ ) . unwrap_or_else (
364
+ |( ) | panic ! ( "Unable to resolve external crate {}" , extern_name)
365
+ ) ;
366
+ }
367
+ } ) ;
368
+
369
+ // Now we're good to clone the resolver because everything should be loaded
370
+ resolver. clone ( )
371
+ } ;
372
+
373
+ if sess. has_errors ( ) {
374
+ sess. fatal ( "Compilation failed, aborting rustdoc" ) ;
375
+ }
376
+
377
+ let mut global_ctxt = abort_on_err ( queries. global_ctxt ( ) , sess) . take ( ) ;
369
378
370
- // Now we're good to clone the resolver because everything should be loaded
371
- resolver. clone ( )
379
+ global_ctxt. enter ( |tcx| {
380
+ tcx. analysis ( LOCAL_CRATE ) . ok ( ) ;
381
+
382
+ // Abort if there were any errors so far
383
+ sess. abort_if_errors ( ) ;
384
+
385
+ let access_levels = tcx. privacy_access_levels ( LOCAL_CRATE ) ;
386
+ // Convert from a HirId set to a DefId set since we don't always have easy access
387
+ // to the map from defid -> hirid
388
+ let access_levels = AccessLevels {
389
+ map : access_levels. map . iter ( )
390
+ . map ( |( & k, & v) | ( tcx. hir ( ) . local_def_id ( k) , v) )
391
+ . collect ( )
372
392
} ;
373
393
374
- if sess. has_errors ( ) {
375
- sess. fatal ( "Compilation failed, aborting rustdoc" ) ;
376
- }
394
+ let mut renderinfo = RenderInfo :: default ( ) ;
395
+ renderinfo. access_levels = access_levels;
396
+
397
+ let mut ctxt = DocContext {
398
+ tcx,
399
+ resolver,
400
+ external_traits : Default :: default ( ) ,
401
+ active_extern_traits : Default :: default ( ) ,
402
+ renderinfo : RefCell :: new ( renderinfo) ,
403
+ ty_substs : Default :: default ( ) ,
404
+ lt_substs : Default :: default ( ) ,
405
+ ct_substs : Default :: default ( ) ,
406
+ impl_trait_bounds : Default :: default ( ) ,
407
+ fake_def_ids : Default :: default ( ) ,
408
+ all_fake_def_ids : Default :: default ( ) ,
409
+ generated_synthetics : Default :: default ( ) ,
410
+ auto_traits : tcx. all_traits ( LOCAL_CRATE ) . iter ( ) . cloned ( ) . filter ( |trait_def_id| {
411
+ tcx. trait_is_auto ( * trait_def_id)
412
+ } ) . collect ( ) ,
413
+ } ;
414
+ debug ! ( "crate: {:?}" , tcx. hir( ) . krate( ) ) ;
377
415
378
- let mut global_ctxt = abort_on_err ( queries. global_ctxt ( ) , sess) . take ( ) ;
379
-
380
- global_ctxt. enter ( |tcx| {
381
- tcx. analysis ( LOCAL_CRATE ) . ok ( ) ;
382
-
383
- // Abort if there were any errors so far
384
- sess. abort_if_errors ( ) ;
385
-
386
- let access_levels = tcx. privacy_access_levels ( LOCAL_CRATE ) ;
387
- // Convert from a HirId set to a DefId set since we don't always have easy access
388
- // to the map from defid -> hirid
389
- let access_levels = AccessLevels {
390
- map : access_levels. map . iter ( )
391
- . map ( |( & k, & v) | ( tcx. hir ( ) . local_def_id ( k) , v) )
392
- . collect ( )
393
- } ;
394
-
395
- let mut renderinfo = RenderInfo :: default ( ) ;
396
- renderinfo. access_levels = access_levels;
397
-
398
- let mut ctxt = DocContext {
399
- tcx,
400
- resolver,
401
- external_traits : Default :: default ( ) ,
402
- active_extern_traits : Default :: default ( ) ,
403
- renderinfo : RefCell :: new ( renderinfo) ,
404
- ty_substs : Default :: default ( ) ,
405
- lt_substs : Default :: default ( ) ,
406
- ct_substs : Default :: default ( ) ,
407
- impl_trait_bounds : Default :: default ( ) ,
408
- fake_def_ids : Default :: default ( ) ,
409
- all_fake_def_ids : Default :: default ( ) ,
410
- generated_synthetics : Default :: default ( ) ,
411
- auto_traits : tcx. all_traits ( LOCAL_CRATE ) . iter ( ) . cloned ( ) . filter ( |trait_def_id| {
412
- tcx. trait_is_auto ( * trait_def_id)
413
- } ) . collect ( ) ,
414
- } ;
415
- debug ! ( "crate: {:?}" , tcx. hir( ) . krate( ) ) ;
416
-
417
- let mut krate = clean:: krate ( & mut ctxt) ;
418
-
419
- fn report_deprecated_attr ( name : & str , diag : & errors:: Handler ) {
420
- let mut msg = diag. struct_warn ( & format ! ( "the `#![doc({})]` attribute is \
421
- considered deprecated", name) ) ;
422
- msg. warn ( "please see https://github.com/rust-lang/rust/issues/44136" ) ;
423
-
424
- if name == "no_default_passes" {
425
- msg. help ( "you may want to use `#![doc(document_private_items)]`" ) ;
426
- }
416
+ let mut krate = clean:: krate ( & mut ctxt) ;
417
+
418
+ fn report_deprecated_attr ( name : & str , diag : & errors:: Handler ) {
419
+ let mut msg = diag. struct_warn ( & format ! ( "the `#![doc({})]` attribute is \
420
+ considered deprecated", name) ) ;
421
+ msg. warn ( "please see https://github.com/rust-lang/rust/issues/44136" ) ;
427
422
428
- msg. emit ( ) ;
423
+ if name == "no_default_passes" {
424
+ msg. help ( "you may want to use `#![doc(document_private_items)]`" ) ;
429
425
}
430
426
431
- // Process all of the crate attributes, extracting plugin metadata along
432
- // with the passes which we are supposed to run.
433
- for attr in krate. module . as_ref ( ) . unwrap ( ) . attrs . lists ( sym:: doc) {
434
- let diag = ctxt. sess ( ) . diagnostic ( ) ;
435
-
436
- let name = attr. name_or_empty ( ) ;
437
- if attr. is_word ( ) {
438
- if name == sym:: no_default_passes {
439
- report_deprecated_attr ( "no_default_passes" , diag) ;
440
- if default_passes == passes:: DefaultPassOption :: Default {
441
- default_passes = passes:: DefaultPassOption :: None ;
442
- }
443
- }
444
- } else if let Some ( value) = attr. value_str ( ) {
445
- let sink = match name {
446
- sym:: passes => {
447
- report_deprecated_attr ( "passes = \" ...\" " , diag) ;
448
- & mut manual_passes
449
- } ,
450
- sym:: plugins => {
451
- report_deprecated_attr ( "plugins = \" ...\" " , diag) ;
452
- eprintln ! ( "WARNING: `#![doc(plugins = \" ...\" )]` \
453
- no longer functions; see CVE-2018-1000622") ;
454
- continue
455
- } ,
456
- _ => continue ,
457
- } ;
458
- for name in value. as_str ( ) . split_whitespace ( ) {
459
- sink. push ( name. to_string ( ) ) ;
460
- }
461
- }
427
+ msg. emit ( ) ;
428
+ }
429
+
430
+ // Process all of the crate attributes, extracting plugin metadata along
431
+ // with the passes which we are supposed to run.
432
+ for attr in krate. module . as_ref ( ) . unwrap ( ) . attrs . lists ( sym:: doc) {
433
+ let diag = ctxt. sess ( ) . diagnostic ( ) ;
462
434
463
- if attr. is_word ( ) && name == sym:: document_private_items {
435
+ let name = attr. name_or_empty ( ) ;
436
+ if attr. is_word ( ) {
437
+ if name == sym:: no_default_passes {
438
+ report_deprecated_attr ( "no_default_passes" , diag) ;
464
439
if default_passes == passes:: DefaultPassOption :: Default {
465
- default_passes = passes:: DefaultPassOption :: Private ;
440
+ default_passes = passes:: DefaultPassOption :: None ;
466
441
}
467
442
}
443
+ } else if let Some ( value) = attr. value_str ( ) {
444
+ let sink = match name {
445
+ sym:: passes => {
446
+ report_deprecated_attr ( "passes = \" ...\" " , diag) ;
447
+ & mut manual_passes
448
+ } ,
449
+ sym:: plugins => {
450
+ report_deprecated_attr ( "plugins = \" ...\" " , diag) ;
451
+ eprintln ! ( "WARNING: `#![doc(plugins = \" ...\" )]` \
452
+ no longer functions; see CVE-2018-1000622") ;
453
+ continue
454
+ } ,
455
+ _ => continue ,
456
+ } ;
457
+ for name in value. as_str ( ) . split_whitespace ( ) {
458
+ sink. push ( name. to_string ( ) ) ;
459
+ }
468
460
}
469
461
470
- let passes = passes:: defaults ( default_passes) . iter ( ) . chain ( manual_passes. into_iter ( )
471
- . flat_map ( |name| {
472
- if let Some ( pass) = passes:: find_pass ( & name) {
473
- Some ( pass)
474
- } else {
475
- error ! ( "unknown pass {}, skipping" , name) ;
476
- None
477
- }
478
- } ) ) ;
462
+ if attr. is_word ( ) && name == sym:: document_private_items {
463
+ if default_passes == passes:: DefaultPassOption :: Default {
464
+ default_passes = passes:: DefaultPassOption :: Private ;
465
+ }
466
+ }
467
+ }
468
+
469
+ let passes = passes:: defaults ( default_passes) . iter ( ) . chain ( manual_passes. into_iter ( )
470
+ . flat_map ( |name| {
471
+ if let Some ( pass) = passes:: find_pass ( & name) {
472
+ Some ( pass)
473
+ } else {
474
+ error ! ( "unknown pass {}, skipping" , name) ;
475
+ None
476
+ }
477
+ } ) ) ;
479
478
480
- info ! ( "Executing passes" ) ;
479
+ info ! ( "Executing passes" ) ;
481
480
482
- for pass in passes {
483
- debug ! ( "running pass {}" , pass. name) ;
484
- krate = ( pass. pass ) ( krate, & ctxt) ;
485
- }
481
+ for pass in passes {
482
+ debug ! ( "running pass {}" , pass. name) ;
483
+ krate = ( pass. pass ) ( krate, & ctxt) ;
484
+ }
486
485
487
- ctxt. sess ( ) . abort_if_errors ( ) ;
486
+ ctxt. sess ( ) . abort_if_errors ( ) ;
488
487
489
- ( krate, ctxt. renderinfo . into_inner ( ) , render_options)
490
- } )
488
+ ( krate, ctxt. renderinfo . into_inner ( ) , render_options)
491
489
} )
492
- } )
490
+ } ) } )
493
491
}
494
492
495
493
/// `DefId` or parameter index (`ty::ParamTy.index`) of a synthetic type parameter
0 commit comments