diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-12-04 03:30:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-04 03:30:29 +0100 |
| commit | 14895ea78b0424cfdba070cfb61ac7d2da33c3b6 (patch) | |
| tree | 45b2139969f238c7fae67feb1398d5a65ff258be | |
| parent | 88f0c72dc693cd1391fab4f60df861b245db5d12 (diff) | |
| parent | 88c6cf88842fa6a321f2630ea154d0267969466d (diff) | |
| download | rust-14895ea78b0424cfdba070cfb61ac7d2da33c3b6.tar.gz rust-14895ea78b0424cfdba070cfb61ac7d2da33c3b6.zip | |
Rollup merge of #79623 - jyn514:ident, r=GuillaumeGomez
Pass around Symbols instead of Idents in doctree The span was unused. Vaguely related to https://github.com/rust-lang/rust/pull/78082 - currently working on converting `visit_ast` to use `hir::intravisit` and this makes that a little easier. r? ``@GuillaumeGomez``
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 15 | ||||
| -rw-r--r-- | src/librustdoc/doctree.rs | 8 | ||||
| -rw-r--r-- | src/librustdoc/visit_ast.rs | 18 |
3 files changed, 19 insertions, 22 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index bf3b994c52a..8c344338de7 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1974,16 +1974,13 @@ impl Clean<BareFunctionDecl> for hir::BareFnTy<'_> { } } -impl Clean<Vec<Item>> for (&hir::Item<'_>, Option<Ident>) { +impl Clean<Vec<Item>> for (&hir::Item<'_>, Option<Symbol>) { fn clean(&self, cx: &DocContext<'_>) -> Vec<Item> { use hir::ItemKind; let (item, renamed) = self; let def_id = cx.tcx.hir().local_def_id(item.hir_id).to_def_id(); - let mut name = match renamed { - Some(ident) => ident.name, - None => cx.tcx.hir().name(item.hir_id), - }; + let mut name = renamed.unwrap_or_else(|| cx.tcx.hir().name(item.hir_id)); cx.with_param_env(def_id, || { let kind = match item.kind { ItemKind::Static(ty, mutability, body_id) => StaticItem(Static { @@ -2276,7 +2273,7 @@ impl Clean<Vec<Item>> for doctree::Import<'_> { } } -impl Clean<Item> for (&hir::ForeignItem<'_>, Option<Ident>) { +impl Clean<Item> for (&hir::ForeignItem<'_>, Option<Symbol>) { fn clean(&self, cx: &DocContext<'_>) -> Item { let (item, renamed) = self; cx.with_param_env(cx.tcx.hir().local_def_id(item.hir_id).to_def_id(), || { @@ -2310,7 +2307,7 @@ impl Clean<Item> for (&hir::ForeignItem<'_>, Option<Ident>) { Item::from_hir_id_and_parts( item.hir_id, - Some(renamed.unwrap_or(item.ident).name), + Some(renamed.unwrap_or(item.ident.name)), kind, cx, ) @@ -2318,10 +2315,10 @@ impl Clean<Item> for (&hir::ForeignItem<'_>, Option<Ident>) { } } -impl Clean<Item> for (&hir::MacroDef<'_>, Option<Ident>) { +impl Clean<Item> for (&hir::MacroDef<'_>, Option<Symbol>) { fn clean(&self, cx: &DocContext<'_>) -> Item { let (item, renamed) = self; - let name = renamed.unwrap_or(item.ident).name; + let name = renamed.unwrap_or(item.ident.name); let tts = item.ast.body.inner_tokens().trees().collect::<Vec<_>>(); // Extract the spans of all matchers. They represent the "interface" of the macro. let matchers = tts.chunks(4).map(|arm| arm[0].span()).collect::<Vec<_>>(); diff --git a/src/librustdoc/doctree.rs b/src/librustdoc/doctree.rs index 3961870a1bf..ee9a6981857 100644 --- a/src/librustdoc/doctree.rs +++ b/src/librustdoc/doctree.rs @@ -3,7 +3,7 @@ crate use self::StructType::*; use rustc_ast as ast; -use rustc_span::{self, symbol::Ident, Span, Symbol}; +use rustc_span::{self, Span, Symbol}; use rustc_hir as hir; @@ -16,9 +16,9 @@ crate struct Module<'hir> { crate mods: Vec<Module<'hir>>, crate id: hir::HirId, // (item, renamed) - crate items: Vec<(&'hir hir::Item<'hir>, Option<Ident>)>, - crate foreigns: Vec<(&'hir hir::ForeignItem<'hir>, Option<Ident>)>, - crate macros: Vec<(&'hir hir::MacroDef<'hir>, Option<Ident>)>, + crate items: Vec<(&'hir hir::Item<'hir>, Option<Symbol>)>, + crate foreigns: Vec<(&'hir hir::ForeignItem<'hir>, Option<Symbol>)>, + crate macros: Vec<(&'hir hir::MacroDef<'hir>, Option<Symbol>)>, crate is_crate: bool, } diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index 4028293076d..f9cb1d586b1 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -10,7 +10,7 @@ use rustc_hir::Node; use rustc_middle::middle::privacy::AccessLevel; use rustc_middle::ty::TyCtxt; use rustc_span::source_map::Spanned; -use rustc_span::symbol::{kw, sym, Ident, Symbol}; +use rustc_span::symbol::{kw, sym, Symbol}; use rustc_span::{self, Span}; use std::mem; @@ -116,7 +116,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { &mut self, id: hir::HirId, res: Res, - renamed: Option<Ident>, + renamed: Option<Symbol>, glob: bool, om: &mut Module<'tcx>, please_inline: bool, @@ -226,11 +226,11 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { fn visit_item( &mut self, item: &'tcx hir::Item<'_>, - renamed: Option<Ident>, + renamed: Option<Symbol>, om: &mut Module<'tcx>, ) { debug!("visiting item {:?}", item); - let ident = renamed.unwrap_or(item.ident); + let name = renamed.unwrap_or(item.ident.name); if item.vis.node.is_pub() { let def_id = self.cx.tcx.hir().local_def_id(item.hir_id); @@ -266,7 +266,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { } _ => false, }); - let ident = if is_glob { None } else { Some(ident) }; + let ident = if is_glob { None } else { Some(name) }; if self.maybe_inline_local( item.hir_id, path.res, @@ -280,7 +280,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { } om.imports.push(Import { - name: ident.name, + name, id: item.hir_id, vis: &item.vis, attrs: &item.attrs, @@ -296,7 +296,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { &item.vis, item.hir_id, m, - Some(ident.name), + Some(name), )); } hir::ItemKind::Fn(..) @@ -312,7 +312,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { hir::ItemKind::Const(..) => { // Underscore constants do not correspond to a nameable item and // so are never useful in documentation. - if ident.name != kw::Underscore { + if name != kw::Underscore { om.items.push((item, renamed)); } } @@ -329,7 +329,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { fn visit_foreign_item( &mut self, item: &'tcx hir::ForeignItem<'_>, - renamed: Option<Ident>, + renamed: Option<Symbol>, om: &mut Module<'tcx>, ) { // If inlining we only want to include public functions. |
