Skip to content

Commit 4bf789f

Browse files
committed
rustdoc: Queryify is_notable_trait
This might help with #102375.
1 parent a63a03d commit 4bf789f

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

compiler/rustc_middle/src/query/mod.rs

+5
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,11 @@ rustc_queries! {
11261126
desc { |tcx| "checking whether `{}` is `doc(hidden)`", tcx.def_path_str(def_id) }
11271127
}
11281128

1129+
/// Determines whether an item is annotated with `doc(notable_trait)`.
1130+
query is_doc_notable_trait(def_id: DefId) -> bool {
1131+
desc { |tcx| "checking whether `{}` is `doc(notable_trait)`", tcx.def_path_str(def_id) }
1132+
}
1133+
11291134
/// Returns the attributes on the item at `def_id`.
11301135
///
11311136
/// Do not use this directly, use `tcx.get_attrs` instead.

compiler/rustc_middle/src/ty/util.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -1289,12 +1289,24 @@ pub fn is_doc_hidden(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
12891289
.any(|items| items.iter().any(|item| item.has_name(sym::hidden)))
12901290
}
12911291

1292+
/// Determines whether an item is annotated with `doc(notable_trait)`.
1293+
pub fn is_doc_notable_trait(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
1294+
tcx.get_attrs(def_id, sym::doc)
1295+
.filter_map(|attr| attr.meta_item_list())
1296+
.any(|items| items.iter().any(|item| item.has_name(sym::notable_trait)))
1297+
}
1298+
12921299
/// Determines whether an item is an intrinsic by Abi.
12931300
pub fn is_intrinsic(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
12941301
matches!(tcx.fn_sig(def_id).abi(), Abi::RustIntrinsic | Abi::PlatformIntrinsic)
12951302
}
12961303

12971304
pub fn provide(providers: &mut ty::query::Providers) {
1298-
*providers =
1299-
ty::query::Providers { normalize_opaque_types, is_doc_hidden, is_intrinsic, ..*providers }
1305+
*providers = ty::query::Providers {
1306+
normalize_opaque_types,
1307+
is_doc_hidden,
1308+
is_doc_notable_trait,
1309+
is_intrinsic,
1310+
..*providers
1311+
}
13001312
}

src/librustdoc/clean/types.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use crate::clean::cfg::Cfg;
3737
use crate::clean::clean_visibility;
3838
use crate::clean::external_path;
3939
use crate::clean::inline::{self, print_inlined_const};
40-
use crate::clean::utils::{has_doc_flag, is_literal_expr, print_const_expr, print_evaluated_const};
40+
use crate::clean::utils::{is_literal_expr, print_const_expr, print_evaluated_const};
4141
use crate::core::DocContext;
4242
use crate::formats::cache::Cache;
4343
use crate::formats::item_type::ItemType;
@@ -1524,7 +1524,7 @@ impl Trait {
15241524
tcx.trait_is_auto(self.def_id)
15251525
}
15261526
pub(crate) fn is_notable_trait(&self, tcx: TyCtxt<'_>) -> bool {
1527-
has_doc_flag(tcx, self.def_id, sym::notable_trait)
1527+
tcx.is_doc_notable_trait(self.def_id)
15281528
}
15291529
pub(crate) fn unsafety(&self, tcx: TyCtxt<'_>) -> hir::Unsafety {
15301530
tcx.trait_def(self.def_id).unsafety

0 commit comments

Comments
 (0)