@@ -710,8 +710,14 @@ impl ExternEntry {
710710 }
711711}
712712
713+ #[ derive( Clone , PartialEq , Debug ) ]
714+ pub struct PrintRequest {
715+ pub kind : PrintKind ,
716+ pub out : OutFileName ,
717+ }
718+
713719#[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
714- pub enum PrintRequest {
720+ pub enum PrintKind {
715721 FileNames ,
716722 Sysroot ,
717723 TargetLibdir ,
@@ -2091,68 +2097,69 @@ fn collect_print_requests(
20912097) -> Vec < PrintRequest > {
20922098 let mut prints = Vec :: < PrintRequest > :: new ( ) ;
20932099 if cg. target_cpu . as_ref ( ) . is_some_and ( |s| s == "help" ) {
2094- prints. push ( PrintRequest :: TargetCPUs ) ;
2100+ prints. push ( PrintRequest { kind : PrintKind :: TargetCPUs , out : OutFileName :: Stdout } ) ;
20952101 cg. target_cpu = None ;
20962102 } ;
20972103 if cg. target_feature == "help" {
2098- prints. push ( PrintRequest :: TargetFeatures ) ;
2104+ prints. push ( PrintRequest { kind : PrintKind :: TargetFeatures , out : OutFileName :: Stdout } ) ;
20992105 cg. target_feature = String :: new ( ) ;
21002106 }
21012107
2102- const PRINT_REQUESTS : & [ ( & str , PrintRequest ) ] = & [
2103- ( "crate-name" , PrintRequest :: CrateName ) ,
2104- ( "file-names" , PrintRequest :: FileNames ) ,
2105- ( "sysroot" , PrintRequest :: Sysroot ) ,
2106- ( "target-libdir" , PrintRequest :: TargetLibdir ) ,
2107- ( "cfg" , PrintRequest :: Cfg ) ,
2108- ( "calling-conventions" , PrintRequest :: CallingConventions ) ,
2109- ( "target-list" , PrintRequest :: TargetList ) ,
2110- ( "target-cpus" , PrintRequest :: TargetCPUs ) ,
2111- ( "target-features" , PrintRequest :: TargetFeatures ) ,
2112- ( "relocation-models" , PrintRequest :: RelocationModels ) ,
2113- ( "code-models" , PrintRequest :: CodeModels ) ,
2114- ( "tls-models" , PrintRequest :: TlsModels ) ,
2115- ( "native-static-libs" , PrintRequest :: NativeStaticLibs ) ,
2116- ( "stack-protector-strategies" , PrintRequest :: StackProtectorStrategies ) ,
2117- ( "target-spec-json" , PrintRequest :: TargetSpec ) ,
2118- ( "all-target-specs-json" , PrintRequest :: AllTargetSpecs ) ,
2119- ( "link-args" , PrintRequest :: LinkArgs ) ,
2120- ( "split-debuginfo" , PrintRequest :: SplitDebuginfo ) ,
2121- ( "deployment-target" , PrintRequest :: DeploymentTarget ) ,
2108+ const PRINT_KINDS : & [ ( & str , PrintKind ) ] = & [
2109+ ( "crate-name" , PrintKind :: CrateName ) ,
2110+ ( "file-names" , PrintKind :: FileNames ) ,
2111+ ( "sysroot" , PrintKind :: Sysroot ) ,
2112+ ( "target-libdir" , PrintKind :: TargetLibdir ) ,
2113+ ( "cfg" , PrintKind :: Cfg ) ,
2114+ ( "calling-conventions" , PrintKind :: CallingConventions ) ,
2115+ ( "target-list" , PrintKind :: TargetList ) ,
2116+ ( "target-cpus" , PrintKind :: TargetCPUs ) ,
2117+ ( "target-features" , PrintKind :: TargetFeatures ) ,
2118+ ( "relocation-models" , PrintKind :: RelocationModels ) ,
2119+ ( "code-models" , PrintKind :: CodeModels ) ,
2120+ ( "tls-models" , PrintKind :: TlsModels ) ,
2121+ ( "native-static-libs" , PrintKind :: NativeStaticLibs ) ,
2122+ ( "stack-protector-strategies" , PrintKind :: StackProtectorStrategies ) ,
2123+ ( "target-spec-json" , PrintKind :: TargetSpec ) ,
2124+ ( "all-target-specs-json" , PrintKind :: AllTargetSpecs ) ,
2125+ ( "link-args" , PrintKind :: LinkArgs ) ,
2126+ ( "split-debuginfo" , PrintKind :: SplitDebuginfo ) ,
2127+ ( "deployment-target" , PrintKind :: DeploymentTarget ) ,
21222128 ] ;
21232129
21242130 prints. extend ( matches. opt_strs ( "print" ) . into_iter ( ) . map ( |req| {
2125- match PRINT_REQUESTS . iter ( ) . find ( |& & ( name, _) | name == req) {
2126- Some ( ( _, PrintRequest :: TargetSpec ) ) => {
2131+ let kind = match PRINT_KINDS . iter ( ) . find ( |& & ( name, _) | name == req) {
2132+ Some ( ( _, PrintKind :: TargetSpec ) ) => {
21272133 if unstable_opts. unstable_options {
2128- PrintRequest :: TargetSpec
2134+ PrintKind :: TargetSpec
21292135 } else {
21302136 handler. early_error (
21312137 "the `-Z unstable-options` flag must also be passed to \
21322138 enable the target-spec-json print option",
21332139 ) ;
21342140 }
21352141 }
2136- Some ( ( _, PrintRequest :: AllTargetSpecs ) ) => {
2142+ Some ( ( _, PrintKind :: AllTargetSpecs ) ) => {
21372143 if unstable_opts. unstable_options {
2138- PrintRequest :: AllTargetSpecs
2144+ PrintKind :: AllTargetSpecs
21392145 } else {
21402146 handler. early_error (
21412147 "the `-Z unstable-options` flag must also be passed to \
21422148 enable the all-target-specs-json print option",
21432149 ) ;
21442150 }
21452151 }
2146- Some ( & ( _, print_request ) ) => print_request ,
2152+ Some ( & ( _, print_kind ) ) => print_kind ,
21472153 None => {
21482154 let prints =
2149- PRINT_REQUESTS . iter ( ) . map ( |( name, _) | format ! ( "`{name}`" ) ) . collect :: < Vec < _ > > ( ) ;
2155+ PRINT_KINDS . iter ( ) . map ( |( name, _) | format ! ( "`{name}`" ) ) . collect :: < Vec < _ > > ( ) ;
21502156 let prints = prints. join ( ", " ) ;
21512157 handler. early_error ( format ! (
21522158 "unknown print request `{req}`. Valid print requests are: {prints}"
21532159 ) ) ;
21542160 }
2155- }
2161+ } ;
2162+ PrintRequest { kind, out : OutFileName :: Stdout }
21562163 } ) ) ;
21572164
21582165 prints
0 commit comments