Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 86c1251

Browse files
committed
fix: Don't drop glob with nested self
1 parent df2eb3c commit 86c1251

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

crates/ide_assists/src/handlers/merge_imports.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,18 @@ use foo::{bar::{self}};
321321
)
322322
}
323323

324+
#[test]
325+
fn test_merge_nested_list_self_and_glob() {
326+
check_assist(
327+
merge_imports,
328+
r"
329+
use std$0::{fmt::*};
330+
use std::{fmt::{self, Display}};
331+
",
332+
r"use std::{fmt::{self, *, Display}};",
333+
)
334+
}
335+
324336
#[test]
325337
fn test_merge_single_wildcard_diff_prefixes() {
326338
check_assist(

crates/ide_db/src/helpers/merge_imports.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ fn recursive_merge(lhs: &ast::UseTree, rhs: &ast::UseTree, merge: MergeBehavior)
115115
let tree_contains_self = |tree: &ast::UseTree| {
116116
tree.use_tree_list()
117117
.map(|tree_list| tree_list.use_trees().any(|it| tree_is_self(&it)))
118+
// Glob imports aren't part of the use-tree lists,
119+
// so they need to be handled explicitly
120+
.or_else(|| tree.star_token().is_some().then(|| false))
118121
};
119122
match (tree_contains_self(lhs_t), tree_contains_self(&rhs_t)) {
120123
(Some(true), None) => continue,

0 commit comments

Comments
 (0)