|
1 | 1 | use std::iter;
|
2 | 2 |
|
3 |
| -use hir::{HirFileIdExt, ModuleSource}; |
| 3 | +use hir::{HasSource, HirFileIdExt, ModuleSource}; |
4 | 4 | use ide_db::{
|
5 | 5 | assists::{AssistId, AssistKind},
|
6 | 6 | base_db::FileId,
|
7 | 7 | defs::{Definition, NameClass, NameRefClass},
|
8 |
| - helpers::item_name, |
9 |
| - items_locator::items_with_name, |
10 | 8 | search::{FileReference, SearchScope},
|
11 | 9 | FxHashMap, FxHashSet,
|
12 | 10 | };
|
@@ -473,6 +471,9 @@ impl Module {
|
473 | 471 | .filter(|(use_file_id, _)| *use_file_id == file_id)
|
474 | 472 | .flat_map(|(_, refs)| refs.into_iter().rev())
|
475 | 473 | .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 | + }); |
476 | 477 |
|
477 | 478 | let mut use_tree_str_opt: Option<Vec<ast::Path>> = None;
|
478 | 479 | //Exists inside and outside selection
|
@@ -565,7 +566,7 @@ impl Module {
|
565 | 566 | _ => false,
|
566 | 567 | };
|
567 | 568 |
|
568 |
| - if def_out_sel || !is_item { |
| 569 | + if (def_out_sel || !is_item) && use_stmt_not_in_sel { |
569 | 570 | self.use_items.insert(0, item.clone());
|
570 | 571 | }
|
571 | 572 | }
|
|
0 commit comments