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

Commit 6248b45

Browse files
committed
fix: do not add use stmt when use stmt is selected in extract_module
1 parent 02214a6 commit 6248b45

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

crates/ide-assists/src/handlers/extract_module.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
use std::iter;
22

3-
use hir::{HirFileIdExt, ModuleSource};
3+
use hir::{HasSource, HirFileIdExt, ModuleSource};
44
use ide_db::{
55
assists::{AssistId, AssistKind},
66
base_db::FileId,
77
defs::{Definition, NameClass, NameRefClass},
8-
helpers::item_name,
9-
items_locator::items_with_name,
108
search::{FileReference, SearchScope},
119
FxHashMap, FxHashSet,
1210
};
@@ -473,6 +471,9 @@ impl Module {
473471
.filter(|(use_file_id, _)| *use_file_id == file_id)
474472
.flat_map(|(_, refs)| refs.into_iter().rev())
475473
.find_map(|fref| find_node_at_range(file.syntax(), fref.range));
474+
let use_stmt_not_in_sel = use_stmt.as_ref().is_some_and(|use_stmt| {
475+
!selection_range.contains_range(use_stmt.syntax().text_range())
476+
});
476477

477478
let mut use_tree_str_opt: Option<Vec<ast::Path>> = None;
478479
//Exists inside and outside selection
@@ -565,7 +566,7 @@ impl Module {
565566
_ => false,
566567
};
567568

568-
if def_out_sel || !is_item {
569+
if (def_out_sel || !is_item) && use_stmt_not_in_sel {
569570
self.use_items.insert(0, item.clone());
570571
}
571572
}

0 commit comments

Comments
 (0)