diff --git a/src/imports.rs b/src/imports.rs index 1d9eba7b1ef..8dad9456fa4 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -578,7 +578,8 @@ impl UseTree { .path .clone() .iter_mut() - .zip(other.path.clone().into_iter()) + .take(self.path.len() - 1) + .zip(other.path.clone().into_iter().take(other.path.len() - 1)) { if *a == b { new_path.push(b); @@ -989,9 +990,9 @@ mod test { } test_merge!(["a::b::{c, d}", "a::b::{e, f}"], ["a::b::{c, d, e, f}"]); - test_merge!(["a::b::c", "a::b"], ["a::b::{self, c}"]); + test_merge!(["a::b::c", "a::b"], ["a::{b, b::c}"]); test_merge!(["a::b", "a::b"], ["a::b"]); - test_merge!(["a", "a::b", "a::b::c"], ["a::{self, b::{self, c}}"]); + test_merge!(["a", "a::b", "a::b::c"], ["a", "a::b", "a::b::c"]); test_merge!( ["a::{b::{self, c}, d::e}", "a::d::f"], ["a::{b::{self, c}, d::{e, f}}"] diff --git a/tests/source/merge_imports.rs b/tests/source/merge_imports.rs index 7a2c5ca8e24..1473f46f786 100644 --- a/tests/source/merge_imports.rs +++ b/tests/source/merge_imports.rs @@ -22,3 +22,6 @@ use a::{b::{c::*}}; use a::{b::{c::{}}}; use a::{b::{c::d}}; use a::{b::{c::{xxx, yyy, zzz}}}; + +use a::b; +use a::b::c; diff --git a/tests/target/merge_imports.rs b/tests/target/merge_imports.rs index 63e5baacaba..92570896a10 100644 --- a/tests/target/merge_imports.rs +++ b/tests/target/merge_imports.rs @@ -14,3 +14,6 @@ use foo::{a, b, c}; pub use foo::{bar, foobar}; use a::b::c::{d, xxx, yyy, zzz, *}; + +use a::b; +use a::b::c;