Auto merge of #88880 - cjgillot:no-krate, r=oli-obk

Rework HIR API to make invocations of the hir_crate query harder.

`hir_crate` forces the recomputation of queries that depend on it.

This PR aims at avoiding useless invocations of `hir_crate` by making dependent code go through `tcx.hir()`.
This commit is contained in:
bors 2021-10-01 20:06:34 +00:00
commit c02371c442
64 changed files with 193 additions and 209 deletions

View file

@ -230,8 +230,7 @@ impl ExternalCrate {
};
if root.is_local() {
tcx.hir()
.krate()
.module()
.root_module()
.item_ids
.iter()
.filter_map(|&id| {
@ -297,8 +296,7 @@ impl ExternalCrate {
if root.is_local() {
tcx.hir()
.krate()
.module()
.root_module()
.item_ids
.iter()
.filter_map(|&id| {

View file

@ -26,8 +26,7 @@ mod tests;
crate fn krate(cx: &mut DocContext<'_>) -> Crate {
use crate::visit_lib::LibEmbargoVisitor;
let krate = cx.tcx.hir().krate();
let module = crate::visit_ast::RustdocVisitor::new(cx).visit(krate);
let module = crate::visit_ast::RustdocVisitor::new(cx).visit();
let mut externs = Vec::new();
for &cnum in cx.tcx.crates(()).iter() {

View file

@ -71,12 +71,12 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
self.exact_paths.entry(did).or_insert_with(|| def_id_to_path(tcx, did));
}
crate fn visit(mut self, krate: &'tcx hir::Crate<'_>) -> Module<'tcx> {
let span = krate.module().inner;
crate fn visit(mut self) -> Module<'tcx> {
let span = self.cx.tcx.def_span(CRATE_DEF_ID);
let mut top_level_module = self.visit_mod_contents(
&Spanned { span, node: hir::VisibilityKind::Public },
hir::CRATE_HIR_ID,
&krate.module(),
self.cx.tcx.hir().root_module(),
self.cx.tcx.crate_name(LOCAL_CRATE),
);