Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/lib.rs')
-rw-r--r--crates/ide-completion/src/lib.rs37
1 files changed, 9 insertions, 28 deletions
diff --git a/crates/ide-completion/src/lib.rs b/crates/ide-completion/src/lib.rs
index ac6b1207f2..8051d48ca5 100644
--- a/crates/ide-completion/src/lib.rs
+++ b/crates/ide-completion/src/lib.rs
@@ -10,17 +10,13 @@ mod snippet;
#[cfg(test)]
mod tests;
-use ide_db::text_edit::TextEdit;
use ide_db::{
- helpers::mod_path_to_ast,
- imports::{
- import_assets::NameToImport,
- insert_use::{self, ImportScope},
- },
- items_locator,
+ imports::insert_use::{self, ImportScope},
syntax_helpers::tree_diff::diff,
+ text_edit::TextEdit,
FilePosition, FxHashSet, RootDatabase,
};
+use syntax::ast::make;
use crate::{
completions::Completions,
@@ -272,7 +268,7 @@ pub fn resolve_completion_edits(
db: &RootDatabase,
config: &CompletionConfig<'_>,
FilePosition { file_id, offset }: FilePosition,
- imports: impl IntoIterator<Item = (String, String)>,
+ imports: impl IntoIterator<Item = String>,
) -> Option<Vec<TextEdit>> {
let _p = tracing::info_span!("resolve_completion_edits").entered();
let sema = hir::Semantics::new(db);
@@ -289,27 +285,12 @@ pub fn resolve_completion_edits(
let new_ast = scope.clone_for_update();
let mut import_insert = TextEdit::builder();
- let cfg = config.import_path_config(true);
-
- imports.into_iter().for_each(|(full_import_path, imported_name)| {
- let items_with_name = items_locator::items_with_name(
- &sema,
- current_crate,
- NameToImport::exact_case_sensitive(imported_name),
- items_locator::AssocSearchMode::Include,
+ imports.into_iter().for_each(|full_import_path| {
+ insert_use::insert_use(
+ &new_ast,
+ make::path_from_text_with_edition(&full_import_path, current_edition),
+ &config.insert_use,
);
- let import = items_with_name
- .filter_map(|candidate| {
- current_module.find_use_path(db, candidate, config.insert_use.prefix_kind, cfg)
- })
- .find(|mod_path| mod_path.display(db, current_edition).to_string() == full_import_path);
- if let Some(import_path) = import {
- insert_use::insert_use(
- &new_ast,
- mod_path_to_ast(&import_path, current_edition),
- &config.insert_use,
- );
- }
});
diff(scope.as_syntax_node(), new_ast.as_syntax_node()).into_text_edit(&mut import_insert);