Remove rustc_session::config::rustc_short_optgroups

This commit is contained in:
Zalathar 2024-11-11 13:17:39 +11:00
parent 3250c1c246
commit 8b4701d74c
2 changed files with 29 additions and 27 deletions

View File

@ -934,9 +934,12 @@ pub fn version_at_macro_invocation(
} }
fn usage(verbose: bool, include_unstable_options: bool, nightly_build: bool) { fn usage(verbose: bool, include_unstable_options: bool, nightly_build: bool) {
let groups = if verbose { config::rustc_optgroups() } else { config::rustc_short_optgroups() };
let mut options = getopts::Options::new(); let mut options = getopts::Options::new();
for option in groups.iter().filter(|x| include_unstable_options || x.is_stable()) { for option in config::rustc_optgroups()
.iter()
.filter(|x| verbose || !x.is_verbose_help_only)
.filter(|x| include_unstable_options || x.is_stable())
{
option.apply(&mut options); option.apply(&mut options);
} }
let message = "Usage: rustc [OPTIONS] INPUT"; let message = "Usage: rustc [OPTIONS] INPUT";

View File

@ -1413,6 +1413,10 @@ pub struct RustcOptGroup {
long_name: &'static str, long_name: &'static str,
desc: &'static str, desc: &'static str,
value_hint: &'static str, value_hint: &'static str,
/// If true, this option should not be printed by `rustc --help`, but
/// should still be printed by `rustc --help -v`.
pub is_verbose_help_only: bool,
} }
impl RustcOptGroup { impl RustcOptGroup {
@ -1452,6 +1456,7 @@ pub fn make_opt(
long_name, long_name,
desc, desc,
value_hint, value_hint,
is_verbose_help_only: false,
} }
} }
@ -1462,16 +1467,15 @@ The default is {DEFAULT_EDITION} and the latest stable edition is {LATEST_STABLE
) )
}); });
/// Returns the "short" subset of the rustc command line options, /// Returns all rustc command line options, including metadata for
/// including metadata for each option, such as whether the option is /// each option, such as whether the option is stable.
/// part of the stable long-term interface for rustc. pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
pub fn rustc_short_optgroups() -> Vec<RustcOptGroup> {
use OptionKind::{Flag, FlagMulti, Multi, Opt}; use OptionKind::{Flag, FlagMulti, Multi, Opt};
use OptionStability::Stable; use OptionStability::{Stable, Unstable};
use self::make_opt as opt; use self::make_opt as opt;
vec![ let mut options = vec![
opt(Stable, Flag, "h", "help", "Display this message", ""), opt(Stable, Flag, "h", "help", "Display this message", ""),
opt( opt(
Stable, Stable,
@ -1558,21 +1562,11 @@ pub fn rustc_short_optgroups() -> Vec<RustcOptGroup> {
opt(Stable, Multi, "C", "codegen", "Set a codegen option", "OPT[=VALUE]"), opt(Stable, Multi, "C", "codegen", "Set a codegen option", "OPT[=VALUE]"),
opt(Stable, Flag, "V", "version", "Print version info and exit", ""), opt(Stable, Flag, "V", "version", "Print version info and exit", ""),
opt(Stable, Flag, "v", "verbose", "Use verbose output", ""), opt(Stable, Flag, "v", "verbose", "Use verbose output", ""),
] ];
}
/// Returns all rustc command line options, including metadata for // Options in this list are hidden from `rustc --help` by default, but are
/// each option, such as whether the option is part of the stable // shown by `rustc --help -v`.
/// long-term interface for rustc. let verbose_only = [
pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
use OptionKind::{Multi, Opt};
use OptionStability::{Stable, Unstable};
use self::make_opt as opt;
let mut opts = rustc_short_optgroups();
// FIXME: none of these descriptions are actually used
opts.extend(vec![
opt( opt(
Stable, Stable,
Multi, Multi,
@ -1620,8 +1614,13 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
"FROM=TO", "FROM=TO",
), ),
opt(Unstable, Multi, "", "env-set", "Inject an environment variable", "VAR=VALUE"), opt(Unstable, Multi, "", "env-set", "Inject an environment variable", "VAR=VALUE"),
]); ];
opts options.extend(verbose_only.into_iter().map(|mut opt| {
opt.is_verbose_help_only = true;
opt
}));
options
} }
pub fn get_cmd_lint_options( pub fn get_cmd_lint_options(