-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ensure we always print all --print options in help #137862
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -42,6 +42,32 @@ mod cfg; | |
mod native_libs; | ||
pub mod sigpipe; | ||
|
||
pub const PRINT_KINDS: &[(&str, PrintKind)] = &[ | ||
// tidy-alphabetical-start | ||
("all-target-specs-json", PrintKind::AllTargetSpecs), | ||
("calling-conventions", PrintKind::CallingConventions), | ||
("cfg", PrintKind::Cfg), | ||
("check-cfg", PrintKind::CheckCfg), | ||
("code-models", PrintKind::CodeModels), | ||
("crate-name", PrintKind::CrateName), | ||
("deployment-target", PrintKind::DeploymentTarget), | ||
("file-names", PrintKind::FileNames), | ||
("host-tuple", PrintKind::HostTuple), | ||
("link-args", PrintKind::LinkArgs), | ||
("native-static-libs", PrintKind::NativeStaticLibs), | ||
("relocation-models", PrintKind::RelocationModels), | ||
("split-debuginfo", PrintKind::SplitDebuginfo), | ||
("stack-protector-strategies", PrintKind::StackProtectorStrategies), | ||
("sysroot", PrintKind::Sysroot), | ||
("target-cpus", PrintKind::TargetCPUs), | ||
("target-features", PrintKind::TargetFeatures), | ||
("target-libdir", PrintKind::TargetLibdir), | ||
("target-list", PrintKind::TargetList), | ||
("target-spec-json", PrintKind::TargetSpec), | ||
("tls-models", PrintKind::TlsModels), | ||
// tidy-alphabetical-end | ||
]; | ||
|
||
/// The different settings that the `-C strip` flag can have. | ||
#[derive(Clone, Copy, PartialEq, Hash, Debug)] | ||
pub enum Strip { | ||
|
@@ -1508,6 +1534,13 @@ The default is {DEFAULT_EDITION} and the latest stable edition is {LATEST_STABLE | |
) | ||
}); | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you make this a local variable instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure, just remove pub or put it in some function? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, I meant making it a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually, when reading the code a bit, I see that this same thing is needed in the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sounds good i'll make come up with a func somehwere. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. extracting to a function makes this all worse than a lazy lock imo. the reason theres a lazy lock is because make_opt expects your format string to be static lifetime. and its possible theres some way to craft a so can we stick with lazy lock? it follows the pattern of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ah, okay. it's fine then, I wasn't aware of the static lifetime requirement. |
||
static PRINT_KINDS_STRING: LazyLock<String> = LazyLock::new(|| { | ||
format!( | ||
"[{}]", | ||
PRINT_KINDS.iter().map(|(name, _)| format!("{name}")).collect::<Vec<_>>().join("|") | ||
) | ||
}); | ||
|
||
/// Returns all rustc command line options, including metadata for | ||
/// each option, such as whether the option is stable. | ||
pub fn rustc_optgroups() -> Vec<RustcOptGroup> { | ||
|
@@ -1568,10 +1601,7 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> { | |
"", | ||
"print", | ||
"Compiler information to print on stdout", | ||
"[crate-name|file-names|sysroot|target-libdir|cfg|check-cfg|calling-conventions|\ | ||
target-list|target-cpus|target-features|relocation-models|code-models|\ | ||
tls-models|target-spec-json|all-target-specs-json|native-static-libs|\ | ||
stack-protector-strategies|link-args|deployment-target]", | ||
&PRINT_KINDS_STRING, | ||
), | ||
opt(Stable, FlagMulti, "g", "", "Equivalent to -C debuginfo=2", ""), | ||
opt(Stable, FlagMulti, "O", "", "Equivalent to -C opt-level=3", ""), | ||
|
@@ -1999,32 +2029,6 @@ fn collect_print_requests( | |
cg.target_feature = String::new(); | ||
} | ||
|
||
const PRINT_KINDS: &[(&str, PrintKind)] = &[ | ||
// tidy-alphabetical-start | ||
("all-target-specs-json", PrintKind::AllTargetSpecs), | ||
("calling-conventions", PrintKind::CallingConventions), | ||
("cfg", PrintKind::Cfg), | ||
("check-cfg", PrintKind::CheckCfg), | ||
("code-models", PrintKind::CodeModels), | ||
("crate-name", PrintKind::CrateName), | ||
("deployment-target", PrintKind::DeploymentTarget), | ||
("file-names", PrintKind::FileNames), | ||
("host-tuple", PrintKind::HostTuple), | ||
("link-args", PrintKind::LinkArgs), | ||
("native-static-libs", PrintKind::NativeStaticLibs), | ||
("relocation-models", PrintKind::RelocationModels), | ||
("split-debuginfo", PrintKind::SplitDebuginfo), | ||
("stack-protector-strategies", PrintKind::StackProtectorStrategies), | ||
("sysroot", PrintKind::Sysroot), | ||
("target-cpus", PrintKind::TargetCPUs), | ||
("target-features", PrintKind::TargetFeatures), | ||
("target-libdir", PrintKind::TargetLibdir), | ||
("target-list", PrintKind::TargetList), | ||
("target-spec-json", PrintKind::TargetSpec), | ||
("tls-models", PrintKind::TlsModels), | ||
// tidy-alphabetical-end | ||
]; | ||
|
||
// We disallow reusing the same path in multiple prints, such as `--print | ||
// cfg=output.txt --print link-args=output.txt`, because outputs are printed | ||
// by disparate pieces of the compiler, and keeping track of which files | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
error: Argument to option 'print' missing | ||
Usage: | ||
--print [crate-name|file-names|sysroot|target-libdir|cfg|check-cfg|calling-conventions|target-list|target-cpus|target-features|relocation-models|code-models|tls-models|target-spec-json|all-target-specs-json|native-static-libs|stack-protector-strategies|link-args|deployment-target] | ||
--print [all-target-specs-json|calling-conventions|cfg|check-cfg|code-models|crate-name|deployment-target|file-names|host-tuple|link-args|native-static-libs|relocation-models|split-debuginfo|stack-protector-strategies|sysroot|target-cpus|target-features|target-libdir|target-list|target-spec-json|tls-models] | ||
Compiler information to print on stdout | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you want to make another PR improving
--print
, I'd suggest adding a third tuple field that indicates whether the print request is stable or not instead of the custom checks incollect_print_requests
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good idea, I'll consider it. adding some more helper functions for the PrintKinds enum seem appropriate.