mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 22:31:43 +00:00
Exclude inherent traits from flyimports
This commit is contained in:
parent
75371eb0fa
commit
739edfd5cf
5 changed files with 53 additions and 7 deletions
|
@ -436,6 +436,8 @@ fn trait_applicable_items(
|
|||
})
|
||||
.collect();
|
||||
|
||||
let related_dyn_traits =
|
||||
trait_candidate.receiver_ty.applicable_inherent_traits(db).collect::<FxHashSet<_>>();
|
||||
let mut located_imports = FxHashSet::default();
|
||||
|
||||
if trait_assoc_item {
|
||||
|
@ -451,12 +453,16 @@ fn trait_applicable_items(
|
|||
return None;
|
||||
}
|
||||
}
|
||||
let located_trait = assoc.containing_trait(db)?;
|
||||
if related_dyn_traits.contains(&located_trait) {
|
||||
return None;
|
||||
}
|
||||
|
||||
let item = ItemInNs::from(ModuleDef::from(assoc.containing_trait(db)?));
|
||||
let trait_item = ItemInNs::from(ModuleDef::from(located_trait));
|
||||
let original_item = assoc_to_item(assoc);
|
||||
located_imports.insert(LocatedImport::new(
|
||||
mod_path(item)?,
|
||||
item,
|
||||
mod_path(trait_item)?,
|
||||
trait_item,
|
||||
original_item,
|
||||
mod_path(original_item),
|
||||
));
|
||||
|
@ -473,11 +479,15 @@ fn trait_applicable_items(
|
|||
|_, function| {
|
||||
let assoc = function.as_assoc_item(db)?;
|
||||
if required_assoc_items.contains(&assoc) {
|
||||
let item = ItemInNs::from(ModuleDef::from(assoc.containing_trait(db)?));
|
||||
let located_trait = assoc.containing_trait(db)?;
|
||||
if related_dyn_traits.contains(&located_trait) {
|
||||
return None;
|
||||
}
|
||||
let trait_item = ItemInNs::from(ModuleDef::from(located_trait));
|
||||
let original_item = assoc_to_item(assoc);
|
||||
located_imports.insert(LocatedImport::new(
|
||||
mod_path(item)?,
|
||||
item,
|
||||
mod_path(trait_item)?,
|
||||
trait_item,
|
||||
original_item,
|
||||
mod_path(original_item),
|
||||
));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue