@@ -263,15 +263,7 @@ macro_rules! create_config {
263
263
impl <' a> ConfigSetter <' a> {
264
264
$(
265
265
pub fn $i( & mut self , value: $ty) {
266
- // we check if we are using nightly channel
267
- let unstable = is_nightly_channel!( ) ;
268
- if !( self . 0 ) . $i. 3 {
269
- ( self . 0 ) . $i. 2 = value;
270
- } else {
271
- if unstable {
272
- ( self . 0 ) . $i. 2 = value;
273
- }
274
- }
266
+ ( self . 0 ) . $i. 2 = value;
275
267
}
276
268
) +
277
269
}
@@ -308,8 +300,18 @@ macro_rules! create_config {
308
300
fn fill_from_parsed_config( mut self , parsed: PartialConfig ) -> Config {
309
301
$(
310
302
if let Some ( val) = parsed. $i {
311
- self . $i. 1 = true ;
312
- self . $i. 2 = val;
303
+ if !self . $i. 3 {
304
+ self . $i. 1 = true ;
305
+ self . $i. 2 = val;
306
+ } else {
307
+ if is_nightly_channel!( ) {
308
+ self . $i. 1 = true ;
309
+ self . $i. 2 = val;
310
+ } else {
311
+ println!( "Warning: can't set some features as unstable \
312
+ features are only available in nightly channel.") ;
313
+ }
314
+ }
313
315
}
314
316
) +
315
317
self
@@ -707,4 +709,17 @@ mod test {
707
709
assert_eq ! ( config. unstable_features( ) , true ) ;
708
710
:: std:: env:: set_var ( "CFG_RELEASE_CHANNEL" , v) ;
709
711
}
712
+
713
+ #[ test]
714
+ fn test_unstable_from_toml ( ) {
715
+ let mut config = Config :: from_toml ( "unstable_features = true" ) . unwrap ( ) ;
716
+ assert_eq ! ( config. was_set( ) . unstable_features( ) , false ) ;
717
+ let v = :: std:: env:: var ( "CFG_RELEASE_CHANNEL" ) . unwrap_or ( String :: from ( "" ) ) ;
718
+ :: std:: env:: set_var ( "CFG_RELEASE_CHANNEL" , "nightly" ) ;
719
+ config = Config :: from_toml ( "unstable_features = true" ) . unwrap ( ) ;
720
+ assert_eq ! ( config. was_set( ) . unstable_features( ) , true ) ;
721
+ assert_eq ! ( config. unstable_features( ) , true ) ;
722
+ :: std:: env:: set_var ( "CFG_RELEASE_CHANNEL" , v) ;
723
+ }
724
+
710
725
}
0 commit comments