Ignore associated items during unqialified path fuzzy completions

This commit is contained in:
Kirill Bulatov 2021-01-03 15:58:15 +02:00
parent 8721574a85
commit ec316cb211

View File

@ -3,7 +3,7 @@
use std::iter;
use either::Either;
use hir::{Adt, ModPath, ModuleDef, ScopeDef, Type};
use hir::{Adt, AsAssocItem, ModPath, ModuleDef, ScopeDef, Type};
use ide_db::helpers::insert_use::ImportScope;
use ide_db::imports_locator;
use syntax::AstNode;
@ -143,6 +143,14 @@ fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()
potential_import_name,
true,
)
.filter(|import_candidate| match import_candidate {
Either::Left(ModuleDef::Function(function)) => function.as_assoc_item(ctx.db).is_none(),
Either::Left(ModuleDef::Const(const_)) => const_.as_assoc_item(ctx.db).is_none(),
Either::Left(ModuleDef::TypeAlias(type_alias)) => {
type_alias.as_assoc_item(ctx.db).is_none()
}
_ => true,
})
.filter_map(|import_candidate| {
Some(match import_candidate {
Either::Left(module_def) => {