@@ -816,6 +816,8 @@ macro_rules! options {
816816 Some ( "crate=integer" ) ;
817817 pub const parse_unpretty: Option <& str > =
818818 Some ( "`string` or `string=string`" ) ;
819+ pub const parse_treat_err_as_bug: Option <& str > =
820+ Some ( "either no value or a number bigger than 0" ) ;
819821 pub const parse_lto: Option <& str > =
820822 Some ( "either a boolean (`yes`, `no`, `on`, `off`, etc), `thin`, \
821823 `fat`, or omitted") ;
@@ -1022,6 +1024,13 @@ macro_rules! options {
10221024 }
10231025 }
10241026
1027+ fn parse_treat_err_as_bug( slot: & mut Option <usize >, v: Option <& str >) -> bool {
1028+ match v {
1029+ Some ( s) => { * slot = s. parse( ) . ok( ) . filter( |& x| x != 0 ) ; slot. unwrap_or( 0 ) != 0 }
1030+ None => { * slot = Some ( 1 ) ; true }
1031+ }
1032+ }
1033+
10251034 fn parse_lto( slot: & mut LtoCli , v: Option <& str >) -> bool {
10261035 if v. is_some( ) {
10271036 let mut bool_arg = None ;
@@ -1234,7 +1243,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
12341243 "parse only; do not compile, assemble, or link" ) ,
12351244 no_codegen: bool = ( false , parse_bool, [ TRACKED ] ,
12361245 "run all passes except codegen; no output" ) ,
1237- treat_err_as_bug: Option <usize > = ( None , parse_opt_uint , [ TRACKED ] ,
1246+ treat_err_as_bug: Option <usize > = ( None , parse_treat_err_as_bug , [ TRACKED ] ,
12381247 "treat all errors that occur as bugs" ) ,
12391248 report_delayed_bugs: bool = ( false , parse_bool, [ TRACKED ] ,
12401249 "immediately print bugs registered with `delay_span_bug`" ) ,
@@ -3212,7 +3221,7 @@ mod tests {
32123221 assert ! ( reference. dep_tracking_hash( ) != opts. dep_tracking_hash( ) ) ;
32133222
32143223 opts = reference. clone ( ) ;
3215- opts. debugging_opts . treat_err_as_bug = Some ( 0 ) ;
3224+ opts. debugging_opts . treat_err_as_bug = Some ( 1 ) ;
32163225 assert ! ( reference. dep_tracking_hash( ) != opts. dep_tracking_hash( ) ) ;
32173226
32183227 opts = reference. clone ( ) ;
0 commit comments