diff options
| author | Josh Triplett <josh@joshtriplett.org> | 2021-10-21 13:18:59 +0200 |
|---|---|---|
| committer | Josh Triplett <josh@joshtriplett.org> | 2021-11-15 10:18:30 +0100 |
| commit | c4884bbec7ae6ba06211a2769271b8db38c8284b (patch) | |
| tree | 60fc33d82fdc73ef2fe7eb9854c463daab769ef2 | |
| parent | 42054811104bb005ded241ea8846ba7383921c46 (diff) | |
| download | rust-c4884bbec7ae6ba06211a2769271b8db38c8284b.tar.gz rust-c4884bbec7ae6ba06211a2769271b8db38c8284b.zip | |
Support having -Z and -C options with the same name
Tweak the `options!` macro to allow for -Z and -C options with the same name without generating conflicting internal parsing functions. Split out of the commit stabilizing -Z strip as -C strip.
| -rw-r--r-- | compiler/rustc_session/src/options.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index d1d8606a75a..8b9ec5028d1 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -219,7 +219,7 @@ top_level_options!( /// generated code to parse an option into its respective field in the struct. There are a few /// hand-written parsers for parsing specific types of values in this module. macro_rules! options { - ($struct_name:ident, $stat:ident, $prefix:expr, $outputname:expr, + ($struct_name:ident, $stat:ident, $optmod:ident, $prefix:expr, $outputname:expr, $($( #[$attr:meta] )* $opt:ident : $t:ty = ( $init:expr, $parse:ident, @@ -264,13 +264,15 @@ macro_rules! options { } pub const $stat: OptionDescrs<$struct_name> = - &[ $( (stringify!($opt), $opt, desc::$parse, $desc) ),* ]; + &[ $( (stringify!($opt), $optmod::$opt, desc::$parse, $desc) ),* ]; + mod $optmod { $( - fn $opt(cg: &mut $struct_name, v: Option<&str>) -> bool { - parse::$parse(&mut redirect_field!(cg.$opt), v) + pub(super) fn $opt(cg: &mut super::$struct_name, v: Option<&str>) -> bool { + super::parse::$parse(&mut redirect_field!(cg.$opt), v) } )* + } ) } @@ -918,7 +920,7 @@ mod parse { } options! { - CodegenOptions, CG_OPTIONS, "C", "codegen", + CodegenOptions, CG_OPTIONS, cgopts, "C", "codegen", // This list is in alphabetical order. // @@ -1027,7 +1029,7 @@ options! { } options! { - DebuggingOptions, DB_OPTIONS, "Z", "debugging", + DebuggingOptions, DB_OPTIONS, dbopts, "Z", "debugging", // This list is in alphabetical order. // |
