mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 12:54:58 +00:00
Deduplicate some code
This commit is contained in:
parent
bb0de88f24
commit
2ebf0c87c2
22 changed files with 299 additions and 234 deletions
|
@ -206,7 +206,7 @@ impl Definition {
|
|||
// docs are missing, for assoc items of trait impls try to fall back to the docs of the
|
||||
// original item of the trait
|
||||
let assoc = self.as_assoc_item(db)?;
|
||||
let trait_ = assoc.containing_trait_impl(db)?;
|
||||
let trait_ = assoc.implemented_trait(db)?;
|
||||
let name = Some(assoc.name(db)?);
|
||||
let item = trait_.items(db).into_iter().find(|it| it.name(db) == name)?;
|
||||
item.docs(db)
|
||||
|
|
|
@ -529,7 +529,7 @@ fn trait_applicable_items(
|
|||
return None;
|
||||
}
|
||||
|
||||
let assoc_item_trait = assoc.containing_trait(db)?;
|
||||
let assoc_item_trait = assoc.container_trait(db)?;
|
||||
if related_traits.contains(&assoc_item_trait) {
|
||||
return None;
|
||||
}
|
||||
|
@ -550,8 +550,7 @@ fn trait_applicable_items(
|
|||
None,
|
||||
|assoc| {
|
||||
if required_assoc_items.contains(&assoc) {
|
||||
let located_trait =
|
||||
assoc.containing_trait(db).filter(|&it| scope_filter(it))?;
|
||||
let located_trait = assoc.container_trait(db).filter(|&it| scope_filter(it))?;
|
||||
let trait_item = ItemInNs::from(ModuleDef::from(located_trait));
|
||||
let import_path = trait_import_paths
|
||||
.entry(trait_item)
|
||||
|
@ -576,8 +575,7 @@ fn trait_applicable_items(
|
|||
|function| {
|
||||
let assoc = function.as_assoc_item(db)?;
|
||||
if required_assoc_items.contains(&assoc) {
|
||||
let located_trait =
|
||||
assoc.containing_trait(db).filter(|&it| scope_filter(it))?;
|
||||
let located_trait = assoc.container_trait(db).filter(|&it| scope_filter(it))?;
|
||||
let trait_item = ItemInNs::from(ModuleDef::from(located_trait));
|
||||
let import_path = trait_import_paths
|
||||
.entry(trait_item)
|
||||
|
|
|
@ -75,7 +75,7 @@ pub fn get_missing_assoc_items(
|
|||
pub(crate) fn convert_to_def_in_trait(db: &dyn HirDatabase, def: Definition) -> Definition {
|
||||
(|| {
|
||||
let assoc = def.as_assoc_item(db)?;
|
||||
let trait_ = assoc.containing_trait_impl(db)?;
|
||||
let trait_ = assoc.implemented_trait(db)?;
|
||||
assoc_item_of_trait(db, assoc, trait_)
|
||||
})()
|
||||
.unwrap_or(def)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue