From c32ee54380bfa39cb300a330f1ce886b9f90eaaf Mon Sep 17 00:00:00 2001 From: Noah Lev Date: Sun, 31 Oct 2021 14:49:32 -0700 Subject: [PATCH] rustdoc: Remove redundant `Impl.span` field It can be computed on-demand in `Item::span()`. --- src/librustdoc/clean/auto_trait.rs | 1 - src/librustdoc/clean/blanket_impl.rs | 1 - src/librustdoc/clean/inline.rs | 1 - src/librustdoc/clean/mod.rs | 1 - src/librustdoc/clean/types.rs | 20 +++++++++++++------- src/librustdoc/json/conversions.rs | 1 - 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/librustdoc/clean/auto_trait.rs b/src/librustdoc/clean/auto_trait.rs index ba701f42c66..66f9cb45d70 100644 --- a/src/librustdoc/clean/auto_trait.rs +++ b/src/librustdoc/clean/auto_trait.rs @@ -115,7 +115,6 @@ impl<'a, 'tcx> AutoTraitFinder<'a, 'tcx> { visibility: Inherited, def_id: ItemId::Auto { trait_: trait_def_id, for_: item_def_id }, kind: box ImplItem(Impl { - span: Span::dummy(), unsafety: hir::Unsafety::Normal, generics: new_generics, trait_: Some(trait_ref.clean(self.cx)), diff --git a/src/librustdoc/clean/blanket_impl.rs b/src/librustdoc/clean/blanket_impl.rs index 843dda324da..a880ce883be 100644 --- a/src/librustdoc/clean/blanket_impl.rs +++ b/src/librustdoc/clean/blanket_impl.rs @@ -106,7 +106,6 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> { visibility: Inherited, def_id: ItemId::Blanket { impl_id: impl_def_id, for_: item_def_id }, kind: box ImplItem(Impl { - span: Span::new(self.cx.tcx.def_span(impl_def_id)), unsafety: hir::Unsafety::Normal, generics: ( self.cx.tcx.generics_of(impl_def_id), diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index cb70f465f62..ae7d970f40e 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -490,7 +490,6 @@ crate fn build_impl( did, None, clean::ImplItem(clean::Impl { - span: clean::types::rustc_span(did, cx.tcx), unsafety: hir::Unsafety::Normal, generics, trait_, diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 62da44f0c98..1239d6a0be4 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1889,7 +1889,6 @@ fn clean_impl(impl_: &hir::Impl<'_>, hir_id: hir::HirId, cx: &mut DocContext<'_> }); let mut make_item = |trait_: Option, for_: Type, items: Vec| { let kind = ImplItem(Impl { - span: types::rustc_span(tcx.hir().local_def_id(hir_id).to_def_id(), tcx), unsafety: impl_.unsafety, generics: impl_.generics.clean(cx), trait_, diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 56ae43855de..ae9280c46ff 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -391,12 +391,19 @@ impl Item { ItemKind::StrippedItem(k) => k, _ => &*self.kind, }; - if let ItemKind::ModuleItem(Module { span, .. }) | ItemKind::ImplItem(Impl { span, .. }) = - kind - { - *span - } else { - self.def_id.as_def_id().map(|did| rustc_span(did, tcx)).unwrap_or_else(Span::dummy) + match kind { + ItemKind::ModuleItem(Module { span, .. }) => *span, + ItemKind::ImplItem(Impl { synthetic: true, .. }) => Span::dummy(), + ItemKind::ImplItem(Impl { blanket_impl: Some(_), .. }) => { + if let ItemId::Blanket { impl_id, .. } = self.def_id { + rustc_span(impl_id, tcx) + } else { + panic!("blanket impl item has non-blanket ID") + } + } + _ => { + self.def_id.as_def_id().map(|did| rustc_span(did, tcx)).unwrap_or_else(Span::dummy) + } } } @@ -2165,7 +2172,6 @@ impl Constant { #[derive(Clone, Debug)] crate struct Impl { - crate span: Span, crate unsafety: hir::Unsafety, crate generics: Generics, crate trait_: Option, diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index f740ecdbded..409d08b3298 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -509,7 +509,6 @@ impl FromWithTcx for Impl { negative_polarity, synthetic, blanket_impl, - span: _span, } = impl_; // FIXME: should `trait_` be a clean::Path equivalent in JSON? let trait_ = trait_.map(|path| {