about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2020-11-21 10:10:03 -0500
committerJoshua Nelson <jyn514@gmail.com>2020-11-21 10:19:06 -0500
commit788840612e9da529158ada25d2160ca07d5a8dc9 (patch)
tree49bc72e935c71329057d2d4918c7b5358059436b
parent8c94f8be992719a6e6652018e39a653366b4227f (diff)
downloadrust-788840612e9da529158ada25d2160ca07d5a8dc9.tar.gz
rust-788840612e9da529158ada25d2160ca07d5a8dc9.zip
Fix wrong names when inlining
-rw-r--r--src/librustdoc/clean/mod.rs12
-rw-r--r--src/librustdoc/doctree.rs5
-rw-r--r--src/librustdoc/visit_ast.rs12
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) => {