Fix check for unstable features

These features are registered only on Nightly and so matches.opt_present panics when it's called without the is_nightly guard.
This commit is contained in:
Ingvar Stepanyan 2018-07-31 11:50:09 +01:00
parent ca6b360c8a
commit c25deef110

View File

@ -459,38 +459,39 @@ impl GetOptsOptions {
let rust_nightly = option_env!("CFG_RELEASE_CHANNEL") let rust_nightly = option_env!("CFG_RELEASE_CHANNEL")
.map(|c| c == "nightly") .map(|c| c == "nightly")
.unwrap_or(false); .unwrap_or(false);
if rust_nightly { if rust_nightly {
options.unstable_features = matches.opt_present("unstable-features"); options.unstable_features = matches.opt_present("unstable-features");
}
if options.unstable_features { if options.unstable_features {
if matches.opt_present("skip-children") { if matches.opt_present("skip-children") {
options.skip_children = Some(true); options.skip_children = Some(true);
} }
if matches.opt_present("error-on-unformatted") { if matches.opt_present("error-on-unformatted") {
options.error_on_unformatted = Some(true); options.error_on_unformatted = Some(true);
} }
if let Some(ref file_lines) = matches.opt_str("file-lines") { if let Some(ref file_lines) = matches.opt_str("file-lines") {
options.file_lines = file_lines.parse().map_err(err_msg)?; options.file_lines = file_lines.parse().map_err(err_msg)?;
} }
} else { } else {
let mut unstable_options = vec![]; let mut unstable_options = vec![];
if matches.opt_present("skip-children") { if matches.opt_present("skip-children") {
unstable_options.push("`--skip-children`"); unstable_options.push("`--skip-children`");
} }
if matches.opt_present("error-on-unformatted") { if matches.opt_present("error-on-unformatted") {
unstable_options.push("`--error-on-unformatted`"); unstable_options.push("`--error-on-unformatted`");
} }
if matches.opt_present("file-lines") { if matches.opt_present("file-lines") {
unstable_options.push("`--file-lines`"); unstable_options.push("`--file-lines`");
} }
if !unstable_options.is_empty() { if !unstable_options.is_empty() {
let s = if unstable_options.len() == 1 { "" } else { "s" }; let s = if unstable_options.len() == 1 { "" } else { "s" };
return Err(format_err!( return Err(format_err!(
"Unstable option{} ({}) used without `--unstable-features`", "Unstable option{} ({}) used without `--unstable-features`",
s, s,
unstable_options.join(", "), unstable_options.join(", "),
)); ));
}
} }
} }