diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-11-21 10:10:03 -0500 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-11-21 10:19:06 -0500 |
| commit | 788840612e9da529158ada25d2160ca07d5a8dc9 (patch) | |
| tree | 49bc72e935c71329057d2d4918c7b5358059436b | |
| parent | 8c94f8be992719a6e6652018e39a653366b4227f (diff) | |
| download | rust-788840612e9da529158ada25d2160ca07d5a8dc9.tar.gz rust-788840612e9da529158ada25d2160ca07d5a8dc9.zip | |
Fix wrong names when inlining
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 12 | ||||
| -rw-r--r-- | src/librustdoc/doctree.rs | 5 | ||||
| -rw-r--r-- | src/librustdoc/visit_ast.rs | 12 |
3 files changed, 17 insertions, 12 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 5bc30357f62..d58a88957df 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1922,13 +1922,17 @@ impl Clean<BareFunctionDecl> for hir::BareFnTy<'_> { } } -impl Clean<Item> for hir::Item<'_> { +impl Clean<Item> for (&hir::Item<'_>, Option<Ident>) { fn clean(&self, cx: &DocContext<'_>) -> Item { use hir::ItemKind; - let def_id = cx.tcx.hir().local_def_id(self.hir_id).to_def_id(); - let name = cx.tcx.hir().name(self.hir_id); - let kind = match self.kind { + let (item, renamed) = self; + let def_id = cx.tcx.hir().local_def_id(item.hir_id).to_def_id(); + let name = match renamed { + Some(ident) => ident.name, + None => cx.tcx.hir().name(item.hir_id), + }; + let kind = match item.kind { ItemKind::Static(ty, mutability, body_id) => StaticItem(Static { type_: ty.clean(cx), mutability, diff --git a/src/librustdoc/doctree.rs b/src/librustdoc/doctree.rs index 69baffcc613..d56328cc2aa 100644 --- a/src/librustdoc/doctree.rs +++ b/src/librustdoc/doctree.rs @@ -4,7 +4,7 @@ crate use self::StructType::*; use rustc_ast as ast; use rustc_span::hygiene::MacroKind; -use rustc_span::{self, Span, Symbol}; +use rustc_span::{self, symbol::Ident, Span, Symbol}; use rustc_hir as hir; use rustc_hir::def_id::CrateNum; @@ -20,7 +20,8 @@ crate struct Module<'hir> { crate fns: Vec<Function<'hir>>, crate mods: Vec<Module<'hir>>, crate id: hir::HirId, - crate items: Vec<&'hir hir::Item<'hir>>, + // (item, renamed) + crate items: Vec<(&'hir hir::Item<'hir>, Option<Ident>)>, crate traits: Vec<Trait<'hir>>, crate impls: Vec<Impl<'hir>>, crate foreigns: Vec<ForeignItem<'hir>>, diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index fc42ef79dcc..c55e5f7690c 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -370,21 +370,21 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { Some(ident.name), )); } - hir::ItemKind::Enum(..) => om.items.push(item), - hir::ItemKind::Struct(..) => om.items.push(item), - hir::ItemKind::Union(..) => om.items.push(item), hir::ItemKind::Fn(ref sig, ref gen, body) => { self.visit_fn(om, item, ident.name, &sig.decl, sig.header, gen, body) } - hir::ItemKind::TyAlias(..) + hir::ItemKind::Enum(..) + | hir::ItemKind::Struct(..) + | hir::ItemKind::Union(..) + | hir::ItemKind::TyAlias(..) | hir::ItemKind::OpaqueTy(..) | hir::ItemKind::Static(..) - | hir::ItemKind::TraitAlias(..) => om.items.push(item), + | hir::ItemKind::TraitAlias(..) => om.items.push((item, renamed)), hir::ItemKind::Const(..) => { // Underscore constants do not correspond to a nameable item and // so are never useful in documentation. if ident.name != kw::Underscore { - om.items.push(item); + om.items.push((item, renamed)); } } hir::ItemKind::Trait(is_auto, unsafety, ref generics, ref bounds, ref item_ids) => { |
