Ignore impl items because they can be duplicated in case of generic impl
This commit is contained in:
parent
ae2aa18d74
commit
a752f82f19
@ -181,15 +181,44 @@ fn item(&mut self, item: clean::Item) -> Result<(), Error> {
|
|||||||
let name = item.name;
|
let name = item.name;
|
||||||
let item_id = item.item_id;
|
let item_id = item.item_id;
|
||||||
if let Some(mut new_item) = self.convert_item(item) {
|
if let Some(mut new_item) = self.convert_item(item) {
|
||||||
if let types::ItemEnum::Trait(ref mut t) = new_item.inner {
|
let can_be_ignored = match new_item.inner {
|
||||||
t.implementations = self.get_trait_implementors(item_id.expect_def_id())
|
types::ItemEnum::Trait(ref mut t) => {
|
||||||
} else if let types::ItemEnum::Struct(ref mut s) = new_item.inner {
|
t.implementations = self.get_trait_implementors(item_id.expect_def_id());
|
||||||
s.impls = self.get_impls(item_id.expect_def_id())
|
false
|
||||||
} else if let types::ItemEnum::Enum(ref mut e) = new_item.inner {
|
}
|
||||||
e.impls = self.get_impls(item_id.expect_def_id())
|
types::ItemEnum::Struct(ref mut s) => {
|
||||||
} else if let types::ItemEnum::Union(ref mut u) = new_item.inner {
|
s.impls = self.get_impls(item_id.expect_def_id());
|
||||||
u.impls = self.get_impls(item_id.expect_def_id())
|
false
|
||||||
}
|
}
|
||||||
|
types::ItemEnum::Enum(ref mut e) => {
|
||||||
|
e.impls = self.get_impls(item_id.expect_def_id());
|
||||||
|
false
|
||||||
|
}
|
||||||
|
types::ItemEnum::Union(ref mut u) => {
|
||||||
|
u.impls = self.get_impls(item_id.expect_def_id());
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
types::ItemEnum::Method(_)
|
||||||
|
| types::ItemEnum::AssocConst { .. }
|
||||||
|
| types::ItemEnum::AssocType { .. } => true,
|
||||||
|
types::ItemEnum::Module(_)
|
||||||
|
| types::ItemEnum::ExternCrate { .. }
|
||||||
|
| types::ItemEnum::Import(_)
|
||||||
|
| types::ItemEnum::StructField(_)
|
||||||
|
| types::ItemEnum::Variant(_)
|
||||||
|
| types::ItemEnum::Function(_)
|
||||||
|
| types::ItemEnum::TraitAlias(_)
|
||||||
|
| types::ItemEnum::Impl(_)
|
||||||
|
| types::ItemEnum::Typedef(_)
|
||||||
|
| types::ItemEnum::OpaqueTy(_)
|
||||||
|
| types::ItemEnum::Constant(_)
|
||||||
|
| types::ItemEnum::Static(_)
|
||||||
|
| types::ItemEnum::ForeignType
|
||||||
|
| types::ItemEnum::Macro(_)
|
||||||
|
| types::ItemEnum::ProcMacro(_)
|
||||||
|
| types::ItemEnum::PrimitiveType(_) => false,
|
||||||
|
};
|
||||||
let removed = self
|
let removed = self
|
||||||
.index
|
.index
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
@ -199,7 +228,11 @@ fn item(&mut self, item: clean::Item) -> Result<(), Error> {
|
|||||||
// to make sure the items are unique. The main place this happens is when an item, is
|
// to make sure the items are unique. The main place this happens is when an item, is
|
||||||
// reexported in more than one place. See `rustdoc-json/reexport/in_root_and_mod`
|
// reexported in more than one place. See `rustdoc-json/reexport/in_root_and_mod`
|
||||||
if let Some(old_item) = removed {
|
if let Some(old_item) = removed {
|
||||||
assert_eq!(old_item, new_item);
|
// In case of generic implementations (like `impl<T> Trait for T {}`), all the
|
||||||
|
// inner items will be duplicated so we can ignore if they are slightly different.
|
||||||
|
if !can_be_ignored {
|
||||||
|
assert_eq!(old_item, new_item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user