@@ -343,153 +343,151 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt
343343 registry : rustc_driver:: diagnostics_registry ( ) ,
344344 } ;
345345
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 ( ) ;
369378
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 ( )
372392 } ;
373393
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( ) ) ;
377415
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" ) ;
427422
428- msg. emit ( ) ;
423+ if name == "no_default_passes" {
424+ msg. help ( "you may want to use `#![doc(document_private_items)]`" ) ;
429425 }
430426
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 ( ) ;
462434
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) ;
464439 if default_passes == passes:: DefaultPassOption :: Default {
465- default_passes = passes:: DefaultPassOption :: Private ;
440+ default_passes = passes:: DefaultPassOption :: None ;
466441 }
467442 }
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+ }
468460 }
469461
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+ } ) ) ;
479478
480- info ! ( "Executing passes" ) ;
479+ info ! ( "Executing passes" ) ;
481480
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+ }
486485
487- ctxt. sess ( ) . abort_if_errors ( ) ;
486+ ctxt. sess ( ) . abort_if_errors ( ) ;
488487
489- ( krate, ctxt. renderinfo . into_inner ( ) , render_options)
490- } )
488+ ( krate, ctxt. renderinfo . into_inner ( ) , render_options)
491489 } )
492- } )
490+ } ) } )
493491}
494492
495493/// `DefId` or parameter index (`ty::ParamTy.index`) of a synthetic type parameter
0 commit comments