@@ -77,9 +77,10 @@ create_config! {
7777 // Imports
7878 imports_indent: IndentStyle , IndentStyle :: Block , false , "Indent of imports" ;
7979 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" ;
8181 group_imports: GroupImportsTactic , GroupImportsTactic :: Preserve , false ,
8282 "Controls the strategy for how imports are grouped together" ;
83+ merge_imports: bool , false , false , "(deprecated: use imports_merge_style instead)" ;
8384
8485 // Ordering
8586 reorder_imports: bool , true , true , "Reorder import and extern crate statements alphabetically" ;
@@ -175,6 +176,7 @@ impl PartialConfig {
175176 // Non-user-facing options can't be specified in TOML
176177 let mut cloned = self . clone ( ) ;
177178 cloned. file_lines = None ;
179+ cloned. merge_imports = None ;
178180
179181 :: toml:: to_string ( & cloned) . map_err ( ToTomlError )
180182 }
@@ -444,6 +446,10 @@ mod test {
444446 chain_width: usize , 60 , true , "Maximum length of a chain to fit on a single line." ;
445447 single_line_if_else_max_width: usize , 50 , true , "Maximum line length for single \
446448 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)" ;
447453
448454 unstable_features: bool , false , true ,
449455 "Enables unstable features on stable and beta channels \
@@ -595,7 +601,7 @@ fn_single_line = false
595601where_single_line = false
596602imports_indent = "Block"
597603imports_layout = "Mixed"
598- merge_imports = "Never "
604+ imports_merge_style = "Preserve "
599605group_imports = "Preserve"
600606reorder_imports = true
601607reorder_modules = true
@@ -716,13 +722,13 @@ ignore = []
716722 }
717723 let toml = r#"
718724 unstable_features = true
719- merge_imports = "Crate"
725+ imports_merge_style = "Crate"
720726 "# ;
721727 let config = Config :: from_toml ( toml, Path :: new ( "" ) ) . unwrap ( ) ;
722728 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 ) ;
724730 assert_eq ! ( config. unstable_features( ) , true ) ;
725- assert_eq ! ( config. merge_imports ( ) , MergeImports :: Crate ) ;
731+ assert_eq ! ( config. imports_merge_style ( ) , ImportMergeStyle :: Crate ) ;
726732 }
727733
728734 #[ test]
@@ -731,9 +737,10 @@ ignore = []
731737 // This test requires non-nightly
732738 return ;
733739 }
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 ) ;
737744 }
738745
739746 #[ test]
@@ -778,12 +785,12 @@ ignore = []
778785 }
779786 let mut config = Config :: default ( ) ;
780787 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 ) ;
783790 config. override_value ( "unstable_features" , "true" ) ;
784791 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 ) ;
787794 }
788795
789796 #[ test]
@@ -1036,4 +1043,53 @@ ignore = []
10361043 assert_eq ! ( config. single_line_if_else_max_width( ) , 100 ) ;
10371044 }
10381045 }
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+ }
10391095}
0 commit comments