diff options
Diffstat (limited to 'crates/completion/src/lib.rs')
-rw-r--r-- | crates/completion/src/lib.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/completion/src/lib.rs b/crates/completion/src/lib.rs index ee1b822e7..2c4e54524 100644 --- a/crates/completion/src/lib.rs +++ b/crates/completion/src/lib.rs | |||
@@ -11,10 +11,10 @@ mod render; | |||
11 | 11 | ||
12 | mod completions; | 12 | mod completions; |
13 | 13 | ||
14 | use completions::flyimport::position_for_import; | ||
14 | use ide_db::{ | 15 | use ide_db::{ |
15 | base_db::FilePosition, helpers::insert_use::ImportScope, imports_locator, RootDatabase, | 16 | base_db::FilePosition, helpers::insert_use::ImportScope, imports_locator, RootDatabase, |
16 | }; | 17 | }; |
17 | use syntax::AstNode; | ||
18 | use text_edit::TextEdit; | 18 | use text_edit::TextEdit; |
19 | 19 | ||
20 | use crate::{completions::Completions, context::CompletionContext, item::CompletionKind}; | 20 | use crate::{completions::Completions, context::CompletionContext, item::CompletionKind}; |
@@ -139,12 +139,13 @@ pub fn resolve_completion_edits( | |||
139 | position: FilePosition, | 139 | position: FilePosition, |
140 | full_import_path: &str, | 140 | full_import_path: &str, |
141 | imported_name: String, | 141 | imported_name: String, |
142 | import_for_trait_assoc_item: bool, | ||
142 | ) -> Option<Vec<TextEdit>> { | 143 | ) -> Option<Vec<TextEdit>> { |
143 | let ctx = CompletionContext::new(db, position, config)?; | 144 | let ctx = CompletionContext::new(db, position, config)?; |
144 | let anchor = ctx.name_ref_syntax.as_ref()?; | 145 | let position_for_import = position_for_import(&ctx, None)?; |
145 | let import_scope = ImportScope::find_insert_use_container(anchor.syntax(), &ctx.sema)?; | 146 | let import_scope = ImportScope::find_insert_use_container(position_for_import, &ctx.sema)?; |
146 | 147 | ||
147 | let current_module = ctx.sema.scope(anchor.syntax()).module()?; | 148 | let current_module = ctx.sema.scope(position_for_import).module()?; |
148 | let current_crate = current_module.krate(); | 149 | let current_crate = current_module.krate(); |
149 | 150 | ||
150 | let import_path = imports_locator::find_exact_imports(&ctx.sema, current_crate, imported_name) | 151 | let import_path = imports_locator::find_exact_imports(&ctx.sema, current_crate, imported_name) |
@@ -154,7 +155,7 @@ pub fn resolve_completion_edits( | |||
154 | }) | 155 | }) |
155 | .find(|mod_path| mod_path.to_string() == full_import_path)?; | 156 | .find(|mod_path| mod_path.to_string() == full_import_path)?; |
156 | 157 | ||
157 | ImportEdit { import_path, import_scope } | 158 | ImportEdit { import_path, import_scope, import_for_trait_assoc_item } |
158 | .to_text_edit(config.insert_use.merge) | 159 | .to_text_edit(config.insert_use.merge) |
159 | .map(|edit| vec![edit]) | 160 | .map(|edit| vec![edit]) |
160 | } | 161 | } |