Skip to content

Commit 4763a59

Browse files
committed
fix(import_granularity): do not merge aliases
1 parent 8cb2820 commit 4763a59

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

Diff for: src/imports.rs

+9
Original file line numberDiff line numberDiff line change
@@ -845,9 +845,18 @@ fn merge_use_trees_inner(trees: &mut Vec<UseTree>, use_tree: UseTree, merge_by:
845845
// tree `use_tree` should be merge.
846846
// In other cases `similarity` won't be used, so set it to `0` as a dummy value.
847847
let similarity = if merge_by == SharedPrefix::One {
848+
let tree_depth = tree.path.len();
849+
850+
// Only merge prefixes, not leaves,
851+
// e.g. `foo::i` with `foo::i as j`.
852+
let max_depth = (tree_depth == use_tree.path.len())
853+
.then_some(tree_depth - 1)
854+
.unwrap_or(usize::MAX);
855+
848856
tree.path
849857
.iter()
850858
.zip(&use_tree.path)
859+
.take(max_depth)
851860
.take_while(|(a, b)| a.equal_except_alias(b))
852861
.count()
853862
} else {

Diff for: tests/source/5131_one.rs

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ use bar::d::e;
1313
use bar::d::e as e2;
1414
use qux::h;
1515
use qux::i;
16+
use qux::i as j;

Diff for: tests/target/5131_one.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ pub use foo::{x, x as x2, y};
44
use {
55
bar::{
66
a,
7-
b::{self, f, g},
7+
b::{self, f, f as f2, g},
88
c,
99
d::{e, e as e2},
1010
},
11-
qux::{h, i},
11+
qux::{h, i, i as j},
1212
};

0 commit comments

Comments
 (0)