Skip to content

Commit c4d6b46

Browse files
committed
fix(import_granularity): do not merge aliases
1 parent 6356fca commit c4d6b46

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
@@ -817,9 +817,18 @@ fn merge_use_trees_inner(trees: &mut Vec<UseTree>, use_tree: UseTree, merge_by:
817817
// tree `use_tree` should be merge.
818818
// In other cases `similarity` won't be used, so set it to `0` as a dummy value.
819819
let similarity = if merge_by == SharedPrefix::One {
820+
let tree_depth = tree.path.len();
821+
822+
// Only merge prefixes, not leaves,
823+
// e.g. `foo::i` with `foo::i as j`.
824+
let max_depth = (tree_depth == use_tree.path.len())
825+
.then_some(tree_depth - 1)
826+
.unwrap_or(usize::MAX);
827+
820828
tree.path
821829
.iter()
822830
.zip(&use_tree.path)
831+
.take(max_depth)
823832
.take_while(|(a, b)| a.equal_except_alias(b))
824833
.count()
825834
} 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)