Skip to content

Commit 57c2dd8

Browse files
committed
Fix for issue 4725 - dedup Item imports_granularity (2nd version)
1 parent 87e9602 commit 57c2dd8

31 files changed

+53
-0
lines changed

src/formatting/imports.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ use std::borrow::Cow;
22
use std::cmp::Ordering;
33
use std::fmt;
44

5+
use itertools::Itertools;
6+
57
use rustc_ast::ast::{self, UseTreeKind};
68
use rustc_span::{
79
symbol::{self, sym},
@@ -183,6 +185,8 @@ pub(crate) fn merge_use_trees(use_trees: Vec<UseTree>, merge_by: SharedPrefix) -
183185
}
184186

185187
pub(crate) fn flatten_use_trees(use_trees: Vec<UseTree>) -> Vec<UseTree> {
188+
// Return non-sorted single occurance of the use-trees text string;
189+
// order is by first occurance of the use-tree.
186190
use_trees
187191
.into_iter()
188192
.flat_map(UseTree::flatten)
@@ -197,6 +201,7 @@ pub(crate) fn flatten_use_trees(use_trees: Vec<UseTree>) -> Vec<UseTree> {
197201
}
198202
tree
199203
})
204+
.unique_by(|ut| format!("{}", ut))
200205
.collect()
201206
}
202207

File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use crate::lexer;
2+
use crate::lexer::tokens::TokenData;
3+
use crate::lexer::{tokens::TokenData};
4+
use crate::lexer::self;
5+
use crate::lexer::{self};
6+
use crate::lexer::{self, tokens::TokenData};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// rustfmt-imports_granularity: Item
2+
// rustfmt-reorder_imports: false
3+
// rustfmt-group_imports: StdExternalCrate
4+
5+
use crate::lexer;
6+
use crate::lexer;
7+
use crate::lexer::tokens::TokenData;
8+
use crate::lexer::{tokens::TokenData};
9+
use crate::lexer::self;
10+
use crate::lexer;
11+
use crate::lexer;
12+
use crate::lexer::{self};
13+
use crate::lexer::{self, tokens::TokenData};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// rustfmt-imports_granularity: Item
2+
3+
use crate::lexer;
4+
use crate::lexer;
5+
use crate::lexer::tokens::TokenData;
6+
use crate::lexer::{tokens::TokenData};
7+
use crate::lexer::self;
8+
use crate::lexer;
9+
use crate::lexer;
10+
use crate::lexer::{self};
11+
use crate::lexer::{self, tokens::TokenData};
File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
use crate::lexer;
2+
use crate::lexer;
3+
use crate::lexer::tokens::TokenData;
4+
use crate::lexer::tokens::TokenData;
5+
use crate::lexer::{self};
6+
use crate::lexer::{self, tokens::TokenData};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// rustfmt-imports_granularity: Item
2+
// rustfmt-reorder_imports: false
3+
// rustfmt-group_imports: StdExternalCrate
4+
5+
use crate::lexer;
6+
use crate::lexer::tokens::TokenData;
7+
use crate::lexer::{self};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// rustfmt-imports_granularity: Item
2+
3+
use crate::lexer;
4+
use crate::lexer::tokens::TokenData;
5+
use crate::lexer::{self};

0 commit comments

Comments
 (0)