Skip to content

Commit 1cab171

Browse files
authored
Merge pull request #2605 from nrc/import-squelch
Coalesce some of the import options
2 parents 518ece2 + 305c640 commit 1cab171

File tree

20 files changed

+46
-294
lines changed

20 files changed

+46
-294
lines changed

Configurations.md

Lines changed: 4 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ A possible content of `rustfmt.toml` or `.rustfmt.toml` might look like this:
66

77
```toml
88
indent_style = "Block"
9-
reorder_imported_names = true
9+
reorder_imports = false
1010
```
1111

1212
Each configuration option is either stable or unstable.
@@ -1240,33 +1240,13 @@ fn dolor() -> usize {}
12401240
fn adipiscing() -> usize {}
12411241
```
12421242

1243-
## `reorder_imported_names`
1244-
1245-
Reorder lists of names in import statements alphabetically
1246-
1247-
- **Default value**: `false`
1248-
- **Possible values**: `true`, `false`
1249-
- **Stable**: No
1250-
1251-
#### `false` (default):
1252-
1253-
```rust
1254-
use super::{lorem, ipsum, dolor, sit};
1255-
```
1256-
1257-
#### `true`:
1258-
1259-
```rust
1260-
use super::{dolor, ipsum, lorem, sit};
1261-
```
1262-
1263-
See also [`reorder_imports`](#reorder_imports).
12641243

12651244
## `reorder_imports`
12661245

1267-
Reorder import statements alphabetically
1246+
Reorder import and extern crate statements alphabetically in groups (a group is
1247+
separated by a newline).
12681248

1269-
- **Default value**: `false`
1249+
- **Default value**: `true`
12701250
- **Possible values**: `true`, `false`
12711251
- **Stable**: No
12721252

@@ -1288,98 +1268,6 @@ use lorem;
12881268
use sit;
12891269
```
12901270

1291-
See also [`reorder_imported_names`](#reorder_imported_names), [`reorder_imports_in_group`](#reorder_imports_in_group).
1292-
1293-
## `reorder_imports_in_group`
1294-
1295-
Reorder import statements in group
1296-
1297-
- **Default value**: `false`
1298-
- **Possible values**: `true`, `false`
1299-
- **Stable**: No
1300-
1301-
**Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`.
1302-
1303-
#### `true` (default):
1304-
1305-
```rust
1306-
use std::io;
1307-
use std::mem;
1308-
1309-
use dolor;
1310-
use ipsum;
1311-
use lorem;
1312-
use sit;
1313-
```
1314-
1315-
#### `false`:
1316-
1317-
1318-
```rust
1319-
use dolor;
1320-
use ipsum;
1321-
use lorem;
1322-
use sit;
1323-
use std::io;
1324-
use std::mem;
1325-
```
1326-
1327-
See also [`reorder_imports`](#reorder_imports).
1328-
1329-
## `reorder_extern_crates`
1330-
1331-
Reorder `extern crate` statements alphabetically
1332-
1333-
- **Default value**: `true`
1334-
- **Possible values**: `true`, `false`
1335-
- **Stable**: No
1336-
1337-
#### `true` (default):
1338-
1339-
```rust
1340-
extern crate dolor;
1341-
extern crate ipsum;
1342-
extern crate lorem;
1343-
extern crate sit;
1344-
```
1345-
1346-
#### `false`:
1347-
1348-
```rust
1349-
extern crate lorem;
1350-
extern crate ipsum;
1351-
1352-
extern crate dolor;
1353-
extern crate sit;
1354-
```
1355-
1356-
See also [`reorder_extern_crates_in_group`](#reorder_extern_crates_in_group).
1357-
1358-
## `reorder_extern_crates_in_group`
1359-
1360-
Reorder `extern crate` statements in group
1361-
1362-
- **Default value**: `true`
1363-
- **Possible values**: `true`, `false`
1364-
- **Stable**: No
1365-
1366-
#### `false` (default):
1367-
1368-
This value has no influence beyond the effect of the [`reorder_extern_crates`](#reorder_extern_crates) option. Set [`reorder_extern_crates`](#reorder_extern_crates) to `false` if you do not want `extern crate` groups to be collapsed and ordered.
1369-
1370-
#### `true`:
1371-
1372-
**Note:** This only takes effect when [`reorder_extern_crates`](#reorder_extern_crates) is set to `true`.
1373-
1374-
```rust
1375-
extern crate a;
1376-
extern crate b;
1377-
1378-
extern crate dolor;
1379-
extern crate ipsum;
1380-
extern crate lorem;
1381-
extern crate sit;
1382-
```
13831271

13841272
## `reorder_modules`
13851273

src/config/mod.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,8 @@ create_config! {
6868
imports_layout: ListTactic, ListTactic::Mixed, false, "Item layout inside a import block";
6969

7070
// Ordering
71-
reorder_extern_crates: bool, true, false, "Reorder extern crate statements alphabetically";
72-
reorder_extern_crates_in_group: bool, true, false, "Reorder extern crate statements in group";
73-
reorder_imports: bool, true, false, "Reorder import statements alphabetically";
74-
reorder_imports_in_group: bool, true, false, "Reorder import statements in group";
75-
reorder_imported_names: bool, true, false,
76-
"Reorder lists of names in import statements alphabetically";
77-
reorder_modules: bool, true, false, "Reorder module statemtents alphabetically in group";
71+
reorder_imports: bool, true, false, "Reorder import and extern crate statements alphabetically";
72+
reorder_modules: bool, true, false, "Reorder module statements alphabetically in group";
7873
reorder_impl_items: bool, false, false, "Reorder impl items";
7974

8075
// Spaces around punctuation

src/imports.rs

Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ impl UseTree {
185185
} else {
186186
Some(item.attrs.clone())
187187
},
188-
).normalize(context.config.reorder_imported_names()),
188+
).normalize(),
189189
),
190190
_ => None,
191191
}
@@ -271,7 +271,7 @@ impl UseTree {
271271
}
272272

273273
// Do the adjustments that rustfmt does elsewhere to use paths.
274-
pub fn normalize(mut self, do_sort: bool) -> UseTree {
274+
pub fn normalize(mut self) -> UseTree {
275275
let mut last = self.path.pop().expect("Empty use tree?");
276276
// Hack around borrow checker.
277277
let mut normalize_sole_list = false;
@@ -340,7 +340,7 @@ impl UseTree {
340340
for seg in &list[0].path {
341341
self.path.push(seg.clone());
342342
}
343-
return self.normalize(do_sort);
343+
return self.normalize();
344344
}
345345
_ => unreachable!(),
346346
}
@@ -349,11 +349,9 @@ impl UseTree {
349349
// Recursively normalize elements of a list use (including sorting the list).
350350
if let UseSegment::List(list) = last {
351351
let mut list = list.into_iter()
352-
.map(|ut| ut.normalize(do_sort))
352+
.map(|ut| ut.normalize())
353353
.collect::<Vec<_>>();
354-
if do_sort {
355-
list.sort();
356-
}
354+
list.sort();
357355
last = UseSegment::List(list);
358356
}
359357

@@ -485,6 +483,7 @@ fn rewrite_nested_use_tree(
485483
);
486484
(tactic, remaining_width)
487485
};
486+
488487
let ends_with_newline = context.config.imports_indent() == IndentStyle::Block
489488
&& tactic != DefinitiveListTactic::Horizontal;
490489
let fmt = ListFormatting {
@@ -685,75 +684,64 @@ mod test {
685684

686685
#[test]
687686
fn test_use_tree_normalize() {
687+
assert_eq!(parse_use_tree("a::self").normalize(), parse_use_tree("a"));
688688
assert_eq!(
689-
parse_use_tree("a::self").normalize(true),
690-
parse_use_tree("a")
691-
);
692-
assert_eq!(
693-
parse_use_tree("a::self as foo").normalize(true),
689+
parse_use_tree("a::self as foo").normalize(),
694690
parse_use_tree("a as foo")
695691
);
692+
assert_eq!(parse_use_tree("a::{self}").normalize(), parse_use_tree("a"));
693+
assert_eq!(parse_use_tree("a::{b}").normalize(), parse_use_tree("a::b"));
696694
assert_eq!(
697-
parse_use_tree("a::{self}").normalize(true),
698-
parse_use_tree("a")
699-
);
700-
assert_eq!(
701-
parse_use_tree("a::{b}").normalize(true),
702-
parse_use_tree("a::b")
703-
);
704-
assert_eq!(
705-
parse_use_tree("a::{b, c::self}").normalize(true),
695+
parse_use_tree("a::{b, c::self}").normalize(),
706696
parse_use_tree("a::{b, c}")
707697
);
708698
assert_eq!(
709-
parse_use_tree("a::{b as bar, c::self}").normalize(true),
699+
parse_use_tree("a::{b as bar, c::self}").normalize(),
710700
parse_use_tree("a::{b as bar, c}")
711701
);
712702
}
713703

714704
#[test]
715705
fn test_use_tree_ord() {
716-
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("aa").normalize(true));
717-
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("a::a").normalize(true));
718-
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("*").normalize(true));
719-
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("{a, b}").normalize(true));
720-
assert!(parse_use_tree("*").normalize(true) < parse_use_tree("{a, b}").normalize(true));
706+
assert!(parse_use_tree("a").normalize() < parse_use_tree("aa").normalize());
707+
assert!(parse_use_tree("a").normalize() < parse_use_tree("a::a").normalize());
708+
assert!(parse_use_tree("a").normalize() < parse_use_tree("*").normalize());
709+
assert!(parse_use_tree("a").normalize() < parse_use_tree("{a, b}").normalize());
710+
assert!(parse_use_tree("*").normalize() < parse_use_tree("{a, b}").normalize());
721711

722712
assert!(
723-
parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, dddddddd}").normalize(true)
724-
< parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, ddddddddd}").normalize(true)
725-
);
726-
assert!(
727-
parse_use_tree("serde::de::{Deserialize}").normalize(true)
728-
< parse_use_tree("serde_json").normalize(true)
713+
parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, dddddddd}").normalize()
714+
< parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, ddddddddd}").normalize()
729715
);
730716
assert!(
731-
parse_use_tree("a::b::c").normalize(true) < parse_use_tree("a::b::*").normalize(true)
717+
parse_use_tree("serde::de::{Deserialize}").normalize()
718+
< parse_use_tree("serde_json").normalize()
732719
);
720+
assert!(parse_use_tree("a::b::c").normalize() < parse_use_tree("a::b::*").normalize());
733721
assert!(
734-
parse_use_tree("foo::{Bar, Baz}").normalize(true)
735-
< parse_use_tree("{Bar, Baz}").normalize(true)
722+
parse_use_tree("foo::{Bar, Baz}").normalize()
723+
< parse_use_tree("{Bar, Baz}").normalize()
736724
);
737725

738726
assert!(
739-
parse_use_tree("foo::{self as bar}").normalize(true)
740-
< parse_use_tree("foo::{qux as bar}").normalize(true)
727+
parse_use_tree("foo::{self as bar}").normalize()
728+
< parse_use_tree("foo::{qux as bar}").normalize()
741729
);
742730
assert!(
743-
parse_use_tree("foo::{qux as bar}").normalize(true)
744-
< parse_use_tree("foo::{baz, qux as bar}").normalize(true)
731+
parse_use_tree("foo::{qux as bar}").normalize()
732+
< parse_use_tree("foo::{baz, qux as bar}").normalize()
745733
);
746734
assert!(
747-
parse_use_tree("foo::{self as bar, baz}").normalize(true)
748-
< parse_use_tree("foo::{baz, qux as bar}").normalize(true)
735+
parse_use_tree("foo::{self as bar, baz}").normalize()
736+
< parse_use_tree("foo::{baz, qux as bar}").normalize()
749737
);
750738

751-
assert!(parse_use_tree("foo").normalize(true) < parse_use_tree("Foo").normalize(true));
752-
assert!(parse_use_tree("foo").normalize(true) < parse_use_tree("foo::Bar").normalize(true));
739+
assert!(parse_use_tree("foo").normalize() < parse_use_tree("Foo").normalize());
740+
assert!(parse_use_tree("foo").normalize() < parse_use_tree("foo::Bar").normalize());
753741

754742
assert!(
755-
parse_use_tree("std::cmp::{d, c, b, a}").normalize(true)
756-
< parse_use_tree("std::cmp::{b, e, g, f}").normalize(true)
743+
parse_use_tree("std::cmp::{d, c, b, a}").normalize()
744+
< parse_use_tree("std::cmp::{b, e, g, f}").normalize()
757745
);
758746
}
759747
}

src/reorder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,18 +198,18 @@ impl ReorderableItemKind {
198198

199199
pub fn is_reorderable(&self, config: &Config) -> bool {
200200
match *self {
201-
ReorderableItemKind::ExternCrate => config.reorder_extern_crates(),
201+
ReorderableItemKind::ExternCrate => config.reorder_imports(),
202202
ReorderableItemKind::Mod => config.reorder_modules(),
203203
ReorderableItemKind::Use => config.reorder_imports(),
204204
ReorderableItemKind::Other => false,
205205
}
206206
}
207207

208-
pub fn in_group(&self, config: &Config) -> bool {
208+
pub fn in_group(&self) -> bool {
209209
match *self {
210-
ReorderableItemKind::ExternCrate => config.reorder_extern_crates_in_group(),
211-
ReorderableItemKind::Mod => config.reorder_modules(),
212-
ReorderableItemKind::Use => config.reorder_imports_in_group(),
210+
ReorderableItemKind::ExternCrate
211+
| ReorderableItemKind::Mod
212+
| ReorderableItemKind::Use => true,
213213
ReorderableItemKind::Other => false,
214214
}
215215
}
@@ -268,7 +268,7 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
268268
let item_kind = ReorderableItemKind::from(items[0]);
269269
if item_kind.is_reorderable(self.config) {
270270
let visited_items_num =
271-
self.walk_reorderable_items(items, item_kind, item_kind.in_group(self.config));
271+
self.walk_reorderable_items(items, item_kind, item_kind.in_group());
272272
let (_, rest) = items.split_at(visited_items_num);
273273
items = rest;
274274
} else {

tests/source/configs/reorder_extern_crates/false.rs

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/source/configs/reorder_extern_crates/true.rs

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/source/configs/reorder_imported_names/false.rs

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/source/configs/reorder_imported_names/true.rs

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/source/configs/reorder_imports_in_group/false.rs

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)