update rustdoc
This commit is contained in:
parent
6c8265dc56
commit
bae84a484c
5 changed files with 27 additions and 23 deletions
|
@ -22,7 +22,7 @@ use crate::clean::{
|
|||
use crate::core::DocContext;
|
||||
use crate::formats::item_type::ItemType;
|
||||
|
||||
type Attrs<'hir> = rustc_middle::ty::Attributes<'hir>;
|
||||
type Attrs<'hir> = &'hir [ast::Attribute];
|
||||
|
||||
/// Attempt to inline a definition into this AST.
|
||||
///
|
||||
|
@ -155,7 +155,7 @@ crate fn try_inline_glob(
|
|||
}
|
||||
|
||||
crate fn load_attrs<'hir>(cx: &DocContext<'hir>, did: DefId) -> Attrs<'hir> {
|
||||
cx.tcx.get_attrs(did)
|
||||
cx.tcx.get_attrs_unchecked(did)
|
||||
}
|
||||
|
||||
/// Record an external fully qualified name in the external_paths cache.
|
||||
|
@ -691,7 +691,7 @@ crate fn record_extern_trait(cx: &mut DocContext<'_>, did: DefId) {
|
|||
|
||||
let trait_ = clean::TraitWithExtraInfo {
|
||||
trait_,
|
||||
is_notable: clean::utils::has_doc_flag(cx.tcx.get_attrs(did), sym::notable_trait),
|
||||
is_notable: clean::utils::has_doc_flag(cx.tcx, did, sym::notable_trait),
|
||||
};
|
||||
cx.external_traits.borrow_mut().insert(did, trait_);
|
||||
cx.active_extern_traits.remove(&did);
|
||||
|
|
|
@ -211,8 +211,8 @@ impl ExternalCrate {
|
|||
// Failing that, see if there's an attribute specifying where to find this
|
||||
// external crate
|
||||
let did = self.crate_num.as_def_id();
|
||||
tcx.get_attrs(did)
|
||||
.lists(sym::doc)
|
||||
tcx.get_attrs(did, sym::doc)
|
||||
.flat_map(|attr| attr.meta_item_list().unwrap_or_default())
|
||||
.filter(|a| a.has_name(sym::html_root_url))
|
||||
.filter_map(|a| a.value_str())
|
||||
.map(to_remote)
|
||||
|
@ -226,11 +226,13 @@ impl ExternalCrate {
|
|||
|
||||
let as_keyword = |res: Res<!>| {
|
||||
if let Res::Def(DefKind::Mod, def_id) = res {
|
||||
let attrs = tcx.get_attrs(def_id);
|
||||
let mut keyword = None;
|
||||
for attr in attrs.lists(sym::doc) {
|
||||
if attr.has_name(sym::keyword) {
|
||||
if let Some(v) = attr.value_str() {
|
||||
let meta_items = tcx
|
||||
.get_attrs(def_id, sym::doc)
|
||||
.flat_map(|attr| attr.meta_item_list().unwrap_or_default());
|
||||
for meta in meta_items {
|
||||
if meta.has_name(sym::keyword) {
|
||||
if let Some(v) = meta.value_str() {
|
||||
keyword = Some(v);
|
||||
break;
|
||||
}
|
||||
|
@ -288,11 +290,13 @@ impl ExternalCrate {
|
|||
// rendering by delegating everything to a hash map.
|
||||
let as_primitive = |res: Res<!>| {
|
||||
if let Res::Def(DefKind::Mod, def_id) = res {
|
||||
let attrs = tcx.get_attrs(def_id);
|
||||
let mut prim = None;
|
||||
for attr in attrs.lists(sym::doc) {
|
||||
if let Some(v) = attr.value_str() {
|
||||
if attr.has_name(sym::primitive) {
|
||||
let meta_items = tcx
|
||||
.get_attrs(def_id, sym::doc)
|
||||
.flat_map(|attr| attr.meta_item_list().unwrap_or_default());
|
||||
for meta in meta_items {
|
||||
if let Some(v) = meta.value_str() {
|
||||
if meta.has_name(sym::primitive) {
|
||||
prim = PrimitiveType::from_symbol(v);
|
||||
if prim.is_some() {
|
||||
break;
|
||||
|
@ -413,7 +417,10 @@ impl Item {
|
|||
}
|
||||
|
||||
crate fn inner_docs(&self, tcx: TyCtxt<'_>) -> bool {
|
||||
self.item_id.as_def_id().map(|did| tcx.get_attrs(did).inner_docs()).unwrap_or(false)
|
||||
self.item_id
|
||||
.as_def_id()
|
||||
.map(|did| tcx.get_attrs_unchecked(did).inner_docs())
|
||||
.unwrap_or(false)
|
||||
}
|
||||
|
||||
crate fn span(&self, tcx: TyCtxt<'_>) -> Span {
|
||||
|
@ -464,7 +471,7 @@ impl Item {
|
|||
kind: ItemKind,
|
||||
cx: &mut DocContext<'_>,
|
||||
) -> Item {
|
||||
let ast_attrs = cx.tcx.get_attrs(def_id);
|
||||
let ast_attrs = cx.tcx.get_attrs_unchecked(def_id);
|
||||
|
||||
Self::from_def_id_and_attrs_and_parts(
|
||||
def_id,
|
||||
|
|
|
@ -474,10 +474,9 @@ crate fn find_nearest_parent_module(tcx: TyCtxt<'_>, def_id: DefId) -> Option<De
|
|||
///
|
||||
/// This function exists because it runs on `hir::Attributes` whereas the other is a
|
||||
/// `clean::Attributes` method.
|
||||
crate fn has_doc_flag(attrs: ty::Attributes<'_>, flag: Symbol) -> bool {
|
||||
attrs.iter().any(|attr| {
|
||||
attr.has_name(sym::doc)
|
||||
&& attr.meta_item_list().map_or(false, |l| rustc_attr::list_contains_name(&l, flag))
|
||||
crate fn has_doc_flag(tcx: TyCtxt<'_>, did: DefId, flag: Symbol) -> bool {
|
||||
tcx.get_attrs(did, sym::doc).any(|attr| {
|
||||
attr.meta_item_list().map_or(false, |l| rustc_attr::list_contains_name(&l, flag))
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -323,7 +323,7 @@ fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[cl
|
|||
|
||||
clean::ImportItem(ref import) => {
|
||||
let (stab, stab_tags) = if let Some(import_def_id) = import.source.did {
|
||||
let ast_attrs = cx.tcx().get_attrs(import_def_id);
|
||||
let ast_attrs = cx.tcx().get_attrs_unchecked(import_def_id);
|
||||
let import_attrs = Box::new(clean::Attributes::from_ast(ast_attrs, None));
|
||||
|
||||
// Just need an item with the correct def_id and attrs
|
||||
|
|
|
@ -53,9 +53,7 @@ crate fn collect_trait_impls(mut krate: Crate, cx: &mut DocContext<'_>) -> Crate
|
|||
while let Some(did) = parent {
|
||||
attr_buf.extend(
|
||||
cx.tcx
|
||||
.get_attrs(did)
|
||||
.iter()
|
||||
.filter(|attr| attr.has_name(sym::doc))
|
||||
.get_attrs(did, sym::doc)
|
||||
.filter(|attr| {
|
||||
if let Some([attr]) = attr.meta_item_list().as_deref() {
|
||||
attr.has_name(sym::cfg)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue