@@ -710,8 +710,14 @@ impl ExternEntry {
710
710
}
711
711
}
712
712
713
+ #[ derive( Clone , PartialEq , Debug ) ]
714
+ pub struct PrintRequest {
715
+ pub kind : PrintKind ,
716
+ pub out : OutFileName ,
717
+ }
718
+
713
719
#[ derive( Copy , Clone , PartialEq , Eq , Debug ) ]
714
- pub enum PrintRequest {
720
+ pub enum PrintKind {
715
721
FileNames ,
716
722
Sysroot ,
717
723
TargetLibdir ,
@@ -2091,68 +2097,69 @@ fn collect_print_requests(
2091
2097
) -> Vec < PrintRequest > {
2092
2098
let mut prints = Vec :: < PrintRequest > :: new ( ) ;
2093
2099
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 } ) ;
2095
2101
cg. target_cpu = None ;
2096
2102
} ;
2097
2103
if cg. target_feature == "help" {
2098
- prints. push ( PrintRequest :: TargetFeatures ) ;
2104
+ prints. push ( PrintRequest { kind : PrintKind :: TargetFeatures , out : OutFileName :: Stdout } ) ;
2099
2105
cg. target_feature = String :: new ( ) ;
2100
2106
}
2101
2107
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 ) ,
2122
2128
] ;
2123
2129
2124
2130
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 ) ) => {
2127
2133
if unstable_opts. unstable_options {
2128
- PrintRequest :: TargetSpec
2134
+ PrintKind :: TargetSpec
2129
2135
} else {
2130
2136
handler. early_error (
2131
2137
"the `-Z unstable-options` flag must also be passed to \
2132
2138
enable the target-spec-json print option",
2133
2139
) ;
2134
2140
}
2135
2141
}
2136
- Some ( ( _, PrintRequest :: AllTargetSpecs ) ) => {
2142
+ Some ( ( _, PrintKind :: AllTargetSpecs ) ) => {
2137
2143
if unstable_opts. unstable_options {
2138
- PrintRequest :: AllTargetSpecs
2144
+ PrintKind :: AllTargetSpecs
2139
2145
} else {
2140
2146
handler. early_error (
2141
2147
"the `-Z unstable-options` flag must also be passed to \
2142
2148
enable the all-target-specs-json print option",
2143
2149
) ;
2144
2150
}
2145
2151
}
2146
- Some ( & ( _, print_request ) ) => print_request ,
2152
+ Some ( & ( _, print_kind ) ) => print_kind ,
2147
2153
None => {
2148
2154
let prints =
2149
- PRINT_REQUESTS . iter ( ) . map ( |( name, _) | format ! ( "`{name}`" ) ) . collect :: < Vec < _ > > ( ) ;
2155
+ PRINT_KINDS . iter ( ) . map ( |( name, _) | format ! ( "`{name}`" ) ) . collect :: < Vec < _ > > ( ) ;
2150
2156
let prints = prints. join ( ", " ) ;
2151
2157
handler. early_error ( format ! (
2152
2158
"unknown print request `{req}`. Valid print requests are: {prints}"
2153
2159
) ) ;
2154
2160
}
2155
- }
2161
+ } ;
2162
+ PrintRequest { kind, out : OutFileName :: Stdout }
2156
2163
} ) ) ;
2157
2164
2158
2165
prints
0 commit comments