diff options
Diffstat (limited to 'crates/ide_completion/src/lib.rs')
-rw-r--r-- | crates/ide_completion/src/lib.rs | 20 |
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 | ||
14 | use completions::flyimport::position_for_import; | 14 | use completions::flyimport::position_for_import; |
15 | use ide_db::{ | 15 | use 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 | }; |
18 | use text_edit::TextEdit; | 20 | use 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) |