feat: add trait_impl_reduntant_assoc_item diagnostic

This commit is contained in:
Young-Flash 2023-11-28 21:15:45 +08:00
parent 77e362c34d
commit 5d84edd430
4 changed files with 85 additions and 0 deletions

View file

@ -693,6 +693,25 @@ impl Module {
},
));
let reduntant: Vec<_> = impl_assoc_items_scratch.iter()
.filter(|(id, name)| {
!required_items.clone().any(|(impl_name, impl_item)| {
discriminant(impl_item) == discriminant(id) && impl_name == name
})
})
.map(|(item, name)| (name.clone(), AssocItem::from(*item)))
.collect();
if !reduntant.is_empty() {
acc.push(
TraitImplReduntantAssocItems {
impl_: ast_id_map.get(node.ast_id()),
file_id,
reduntant,
}
.into(),
)
}
let missing: Vec<_> = required_items
.filter(|(name, id)| {
!impl_assoc_items_scratch.iter().any(|(impl_item, impl_name)| {