@@ -373,6 +373,10 @@ pub fn main_args(args: &[String]) -> isize {
373373 for & name in passes:: DEFAULT_PASSES {
374374 println ! ( "{:>20}" , name) ;
375375 }
376+ println ! ( "\n Passes run with `--document-private-items`:" ) ;
377+ for & name in passes:: DEFAULT_PRIVATE_PASSES {
378+ println ! ( "{:>20}" , name) ;
379+ }
376380 return 0 ;
377381 }
378382
@@ -623,20 +627,16 @@ fn rust_input<R, F>(cratefile: PathBuf,
623627where R : ' static + Send ,
624628 F : ' static + Send + FnOnce ( Output ) -> R
625629{
626- let mut default_passes = !matches. opt_present ( "no-defaults" ) ;
627- let mut passes = matches. opt_strs ( "passes" ) ;
628- let mut plugins = matches. opt_strs ( "plugins" ) ;
629-
630- // We hardcode in the passes here, as this is a new flag and we
631- // are generally deprecating passes.
632- if matches. opt_present ( "document-private-items" ) {
633- default_passes = false ;
630+ let mut default_passes = if matches. opt_present ( "no-defaults" ) {
631+ passes:: DefaultPassOption :: None
632+ } else if matches. opt_present ( "document-private-items" ) {
633+ passes:: DefaultPassOption :: Private
634+ } else {
635+ passes:: DefaultPassOption :: Default
636+ } ;
634637
635- passes = vec ! [
636- String :: from( "collapse-docs" ) ,
637- String :: from( "unindent-comments" ) ,
638- ] ;
639- }
638+ let mut manual_passes = matches. opt_strs ( "passes" ) ;
639+ let mut plugins = matches. opt_strs ( "plugins" ) ;
640640
641641 // First, parse the crate and extract all relevant information.
642642 let mut paths = SearchPaths :: new ( ) ;
@@ -706,13 +706,15 @@ where R: 'static + Send,
706706 if attr. is_word ( ) {
707707 if name == Some ( "no_default_passes" ) {
708708 report_deprecated_attr ( "no_default_passes" , & diag) ;
709- default_passes = false ;
709+ if default_passes == passes:: DefaultPassOption :: Default {
710+ default_passes = passes:: DefaultPassOption :: None ;
711+ }
710712 }
711713 } else if let Some ( value) = attr. value_str ( ) {
712714 let sink = match name {
713715 Some ( "passes" ) => {
714716 report_deprecated_attr ( "passes = \" ...\" " , & diag) ;
715- & mut passes
717+ & mut manual_passes
716718 } ,
717719 Some ( "plugins" ) => {
718720 report_deprecated_attr ( "plugins = \" ...\" " , & diag) ;
@@ -726,20 +728,15 @@ where R: 'static + Send,
726728 }
727729
728730 if attr. is_word ( ) && name == Some ( "document_private_items" ) {
729- default_passes = false ;
730-
731- passes = vec ! [
732- String :: from( "collapse-docs" ) ,
733- String :: from( "unindent-comments" ) ,
734- ] ;
731+ if default_passes == passes:: DefaultPassOption :: Default {
732+ default_passes = passes:: DefaultPassOption :: Private ;
733+ }
735734 }
736735 }
737736
738- if default_passes {
739- for name in passes:: DEFAULT_PASSES . iter ( ) . rev ( ) {
740- passes. insert ( 0 , name. to_string ( ) ) ;
741- }
742- }
737+ let mut passes: Vec < String > =
738+ passes:: defaults ( default_passes) . iter ( ) . map ( |p| p. to_string ( ) ) . collect ( ) ;
739+ passes. extend ( manual_passes) ;
743740
744741 if !plugins. is_empty ( ) {
745742 eprintln ! ( "WARNING: --plugins no longer functions; see CVE-2018-1000622" ) ;
0 commit comments