Skip to content

Commit

Permalink
Implement parse_opt_bool better
Browse files Browse the repository at this point in the history
During my clean-up of rebase errors, I took the opportunity to implement
parse_opt_bool so that it isn't identical to parse_bool wrapped in
`Some`.

parse_opt_bool considers no value to be true, a value of 'y', 'yes' or
'on' to be true and 'n', 'no' or 'off' to be false. All other values are
an error.
  • Loading branch information
Aatch authored and pnkfelix committed Mar 3, 2015
1 parent 1246d40 commit 280dea7
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/librustc/session/config.rs
Expand Up @@ -348,7 +348,8 @@ macro_rules! options {
#[allow(non_upper_case_globals, dead_code)]
mod $mod_desc {
pub const parse_bool: Option<&'static str> = None;
pub const parse_opt_bool: Option<&'static str> = None;
pub const parse_opt_bool: Option<&'static str> =
Some("one of: `y`, `yes`, `on`, `n`, `no`, or `off`");
pub const parse_string: Option<&'static str> = Some("a string");
pub const parse_opt_string: Option<&'static str> = Some("a string");
pub const parse_list: Option<&'static str> = Some("a space-separated list of strings");
Expand Down Expand Up @@ -379,7 +380,19 @@ macro_rules! options {

fn parse_opt_bool(slot: &mut Option<bool>, v: Option<&str>) -> bool {
match v {
Some(..) => false,
Some(s) => {
match s {
"n" | "no" | "off" => {
*slot = Some(false);
}
"y" | "yes" | "on" => {
*slot = Some(true);
}
_ => { return false; }
}

true
},
None => { *slot = Some(true); true }
}
}
Expand Down

0 comments on commit 280dea7

Please sign in to comment.