@@ -77,9 +77,10 @@ create_config! {
77
77
// Imports
78
78
imports_indent: IndentStyle , IndentStyle :: Block , false , "Indent of imports" ;
79
79
imports_layout: ListTactic , ListTactic :: Mixed , false , "Item layout inside a import block" ;
80
- merge_imports : MergeImports , MergeImports :: Never , false , "Merge imports" ;
80
+ imports_merge_style : ImportMergeStyle , ImportMergeStyle :: Preserve , false , "Merge imports" ;
81
81
group_imports: GroupImportsTactic , GroupImportsTactic :: Preserve , false ,
82
82
"Controls the strategy for how imports are grouped together" ;
83
+ merge_imports: bool , false , false , "(deprecated: use imports_merge_style instead)" ;
83
84
84
85
// Ordering
85
86
reorder_imports: bool , true , true , "Reorder import and extern crate statements alphabetically" ;
@@ -175,6 +176,7 @@ impl PartialConfig {
175
176
// Non-user-facing options can't be specified in TOML
176
177
let mut cloned = self . clone ( ) ;
177
178
cloned. file_lines = None ;
179
+ cloned. merge_imports = None ;
178
180
179
181
:: toml:: to_string ( & cloned) . map_err ( ToTomlError )
180
182
}
@@ -444,6 +446,10 @@ mod test {
444
446
chain_width: usize , 60 , true , "Maximum length of a chain to fit on a single line." ;
445
447
single_line_if_else_max_width: usize , 50 , true , "Maximum line length for single \
446
448
line if-else expressions. A value of zero means always break if-else expressions.";
449
+ // merge_imports deprecation
450
+ imports_merge_style: ImportMergeStyle , ImportMergeStyle :: Preserve , false ,
451
+ "Merge imports" ;
452
+ merge_imports: bool , false , false , "(deprecated: use imports_merge_style instead)" ;
447
453
448
454
unstable_features: bool , false , true ,
449
455
"Enables unstable features on stable and beta channels \
@@ -595,7 +601,7 @@ fn_single_line = false
595
601
where_single_line = false
596
602
imports_indent = "Block"
597
603
imports_layout = "Mixed"
598
- merge_imports = "Never "
604
+ imports_merge_style = "Preserve "
599
605
group_imports = "Preserve"
600
606
reorder_imports = true
601
607
reorder_modules = true
@@ -716,13 +722,13 @@ ignore = []
716
722
}
717
723
let toml = r#"
718
724
unstable_features = true
719
- merge_imports = "Crate"
725
+ imports_merge_style = "Crate"
720
726
"# ;
721
727
let config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
722
728
assert_eq ! ( config. was_set( ) . unstable_features( ) , true ) ;
723
- assert_eq ! ( config. was_set( ) . merge_imports ( ) , true ) ;
729
+ assert_eq ! ( config. was_set( ) . imports_merge_style ( ) , true ) ;
724
730
assert_eq ! ( config. unstable_features( ) , true ) ;
725
- assert_eq ! ( config. merge_imports ( ) , MergeImports :: Crate ) ;
731
+ assert_eq ! ( config. imports_merge_style ( ) , ImportMergeStyle :: Crate ) ;
726
732
}
727
733
728
734
#[ test]
@@ -731,9 +737,10 @@ ignore = []
731
737
// This test requires non-nightly
732
738
return ;
733
739
}
734
- let config = Config :: from_toml ( "merge_imports = Crate" , Path :: new ( "" ) ) . unwrap ( ) ;
735
- assert_eq ! ( config. was_set( ) . merge_imports( ) , false ) ;
736
- assert_eq ! ( config. merge_imports( ) , MergeImports :: Never ) ;
740
+ let config =
741
+ Config :: from_toml ( "imports_merge_style = \" Crate\" " , Path :: new ( "" ) ) . unwrap ( ) ;
742
+ assert_eq ! ( config. was_set( ) . imports_merge_style( ) , false ) ;
743
+ assert_eq ! ( config. imports_merge_style( ) , ImportMergeStyle :: Preserve ) ;
737
744
}
738
745
739
746
#[ test]
@@ -778,12 +785,12 @@ ignore = []
778
785
}
779
786
let mut config = Config :: default ( ) ;
780
787
assert_eq ! ( config. unstable_features( ) , false ) ;
781
- config. override_value ( "merge_imports " , "Crate" ) ;
782
- assert_eq ! ( config. merge_imports ( ) , MergeImports :: Crate ) ;
788
+ config. override_value ( "imports_merge_style " , "Crate" ) ;
789
+ assert_eq ! ( config. imports_merge_style ( ) , ImportMergeStyle :: Preserve ) ;
783
790
config. override_value ( "unstable_features" , "true" ) ;
784
791
assert_eq ! ( config. unstable_features( ) , true ) ;
785
- config. override_value ( "merge_imports " , "Crate" ) ;
786
- assert_eq ! ( config. merge_imports ( ) , MergeImports :: Crate ) ;
792
+ config. override_value ( "imports_merge_style " , "Crate" ) ;
793
+ assert_eq ! ( config. imports_merge_style ( ) , ImportMergeStyle :: Crate ) ;
787
794
}
788
795
789
796
#[ test]
@@ -1036,4 +1043,53 @@ ignore = []
1036
1043
assert_eq ! ( config. single_line_if_else_max_width( ) , 100 ) ;
1037
1044
}
1038
1045
}
1046
+
1047
+ #[ cfg( test) ]
1048
+ mod deprecated_option_merge_imports {
1049
+ use super :: * ;
1050
+
1051
+ #[ test]
1052
+ fn test_old_option_set ( ) {
1053
+ let toml = r#"
1054
+ unstable_features = true
1055
+ merge_imports = true
1056
+ "# ;
1057
+ let config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
1058
+ assert_eq ! ( config. imports_merge_style( ) , ImportMergeStyle :: Crate ) ;
1059
+ }
1060
+
1061
+ #[ test]
1062
+ fn test_both_set ( ) {
1063
+ let toml = r#"
1064
+ unstable_features = true
1065
+ merge_imports = true
1066
+ imports_merge_style = "Preserve"
1067
+ "# ;
1068
+ let config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
1069
+ assert_eq ! ( config. imports_merge_style( ) , ImportMergeStyle :: Preserve ) ;
1070
+ }
1071
+
1072
+ #[ test]
1073
+ fn test_new_overridden ( ) {
1074
+ let toml = r#"
1075
+ unstable_features = true
1076
+ merge_imports = true
1077
+ "# ;
1078
+ let mut config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
1079
+ config. override_value ( "imports_merge_style" , "Preserve" ) ;
1080
+ assert_eq ! ( config. imports_merge_style( ) , ImportMergeStyle :: Preserve ) ;
1081
+ }
1082
+
1083
+ #[ test]
1084
+ fn test_old_overridden ( ) {
1085
+ let toml = r#"
1086
+ unstable_features = true
1087
+ imports_merge_style = "Module"
1088
+ "# ;
1089
+ let mut config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
1090
+ config. override_value ( "merge_imports" , "true" ) ;
1091
+ // no effect: the new option always takes precedence
1092
+ assert_eq ! ( config. imports_merge_style( ) , ImportMergeStyle :: Module ) ;
1093
+ }
1094
+ }
1039
1095
}
0 commit comments