Deduplicate imports for qualify_path

This commit is contained in:
Lukas Wirth 2021-09-01 21:51:28 +02:00
parent 25368d2430
commit 8e8ea537ab
2 changed files with 7 additions and 3 deletions

View File

@ -89,12 +89,13 @@ pub(crate) fn auto_import(acc: &mut Assists, ctx: &AssistContext) -> Option<()>
if proposed_imports.is_empty() { if proposed_imports.is_empty() {
return None; return None;
} }
// we aren't interested in different namespaces
proposed_imports.dedup_by(|a, b| a.import_path == b.import_path);
let range = ctx.sema.original_range(&syntax_under_caret).range; let range = ctx.sema.original_range(&syntax_under_caret).range;
let group_label = group_label(import_assets.import_candidate()); let group_label = group_label(import_assets.import_candidate());
let scope = ImportScope::find_insert_use_container_with_macros(&syntax_under_caret, &ctx.sema)?; let scope = ImportScope::find_insert_use_container_with_macros(&syntax_under_caret, &ctx.sema)?;
// we aren't interested in different namespaces
proposed_imports.dedup_by(|a, b| a.import_path == b.import_path);
for import in proposed_imports { for import in proposed_imports {
acc.add_group( acc.add_group(
&group_label, &group_label,

View File

@ -37,7 +37,7 @@
// ``` // ```
pub(crate) fn qualify_path(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { pub(crate) fn qualify_path(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
let (import_assets, syntax_under_caret) = find_importable_node(ctx)?; let (import_assets, syntax_under_caret) = find_importable_node(ctx)?;
let proposed_imports = import_assets.search_for_relative_paths(&ctx.sema); let mut proposed_imports = import_assets.search_for_relative_paths(&ctx.sema);
if proposed_imports.is_empty() { if proposed_imports.is_empty() {
return None; return None;
} }
@ -70,6 +70,9 @@ pub(crate) fn qualify_path(acc: &mut Assists, ctx: &AssistContext) -> Option<()>
} }
}; };
// we aren't interested in different namespaces
proposed_imports.dedup_by(|a, b| a.import_path == b.import_path);
let group_label = group_label(candidate); let group_label = group_label(candidate);
for import in proposed_imports { for import in proposed_imports {
acc.add_group( acc.add_group(