From a631108d2dd0596b079b59efa37b1af00d7555db Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Sat, 20 Mar 2021 15:02:52 +0200 Subject: Do not query item search by name eagerly --- crates/ide_completion/src/lib.rs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'crates/ide_completion/src') diff --git a/crates/ide_completion/src/lib.rs b/crates/ide_completion/src/lib.rs index d9ea7b7ea..c91c98871 100644 --- a/crates/ide_completion/src/lib.rs +++ b/crates/ide_completion/src/lib.rs @@ -14,7 +14,10 @@ mod completions; use completions::flyimport::position_for_import; use ide_db::{ base_db::FilePosition, - helpers::{import_assets::LocatedImport, insert_use::ImportScope}, + helpers::{ + import_assets::{LocatedImport, NameToImport}, + insert_use::ImportScope, + }, items_locator, RootDatabase, }; use text_edit::TextEdit; @@ -149,15 +152,20 @@ pub fn resolve_completion_edits( let current_module = ctx.sema.scope(position_for_import).module()?; let current_crate = current_module.krate(); - let (import_path, item_to_import) = - items_locator::with_exact_name(&ctx.sema, current_crate, imported_name) - .into_iter() - .filter_map(|candidate| { - current_module - .find_use_path_prefixed(db, candidate, config.insert_use.prefix_kind) - .zip(Some(candidate)) - }) - .find(|(mod_path, _)| mod_path.to_string() == full_import_path)?; + let (import_path, item_to_import) = items_locator::locate_for_name( + &ctx.sema, + current_crate, + NameToImport::Exact(imported_name), + items_locator::AssocItemSearch::Include, + None, + ) + .into_iter() + .filter_map(|candidate| { + current_module + .find_use_path_prefixed(db, candidate, config.insert_use.prefix_kind) + .zip(Some(candidate)) + }) + .find(|(mod_path, _)| mod_path.to_string() == full_import_path)?; let import = LocatedImport::new(import_path.clone(), item_to_import, item_to_import, Some(import_path)); -- cgit v1.2.3