aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide_completion/src/lib.rs')
-rw-r--r--crates/ide_completion/src/lib.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/crates/ide_completion/src/lib.rs b/crates/ide_completion/src/lib.rs
index b0b809791..ca2e5e706 100644
--- a/crates/ide_completion/src/lib.rs
+++ b/crates/ide_completion/src/lib.rs
@@ -13,7 +13,9 @@ mod completions;
13 13
14use completions::flyimport::position_for_import; 14use completions::flyimport::position_for_import;
15use ide_db::{ 15use ide_db::{
16 base_db::FilePosition, helpers::insert_use::ImportScope, imports_locator, RootDatabase, 16 base_db::FilePosition,
17 helpers::{import_assets::LocatedImport, insert_use::ImportScope},
18 imports_locator, RootDatabase,
17}; 19};
18use text_edit::TextEdit; 20use text_edit::TextEdit;
19 21
@@ -148,12 +150,16 @@ pub fn resolve_completion_edits(
148 let current_module = ctx.sema.scope(position_for_import).module()?; 150 let current_module = ctx.sema.scope(position_for_import).module()?;
149 let current_crate = current_module.krate(); 151 let current_crate = current_module.krate();
150 152
151 let import_path = imports_locator::find_exact_imports(&ctx.sema, current_crate, imported_name) 153 let (import_path, item_to_import) =
152 .filter_map(|candidate| { 154 imports_locator::find_exact_imports(&ctx.sema, current_crate, imported_name)
153 let item: hir::ItemInNs = candidate.either(Into::into, Into::into); 155 .filter_map(|candidate| {
154 current_module.find_use_path_prefixed(db, item, config.insert_use.prefix_kind) 156 let item: hir::ItemInNs = candidate.either(Into::into, Into::into);
155 }) 157 current_module
156 .find(|mod_path| mod_path.to_string() == full_import_path)?; 158 .find_use_path_prefixed(db, item, config.insert_use.prefix_kind)
159 .zip(Some(item))
160 })
161 .find(|(mod_path, _)| mod_path.to_string() == full_import_path)?;
162 let import = LocatedImport::new(import_path, item_to_import, None);
157 163
158 ImportEdit { import_path, import_scope, import_for_trait_assoc_item } 164 ImportEdit { import_path, import_scope, import_for_trait_assoc_item }
159 .to_text_edit(config.insert_use) 165 .to_text_edit(config.insert_use)