Move some Map
methods onto TyCtxt
.
The end goal is to eliminate `Map` altogether. I added a `hir_` prefix to all of them, that seemed simplest. The exceptions are `module_items` which became `hir_module_free_items` because there was already a `hir_module_items`, and `items` which became `hir_free_items` for consistency with `hir_module_free_items`.
This commit is contained in:
parent
cd1d84cdf7
commit
f86f7ad5f2
197 changed files with 465 additions and 476 deletions
|
@ -124,7 +124,7 @@ fn check_union_fields(tcx: TyCtxt<'_>, span: Span, item_def_id: LocalDefId) -> b
|
|||
|
||||
for field in &def.non_enum_variant().fields {
|
||||
if !allowed_union_or_unsafe_field(tcx, field.ty(tcx, args), typing_env, span) {
|
||||
let (field_span, ty_span) = match tcx.hir().get_if_local(field.did) {
|
||||
let (field_span, ty_span) = match tcx.hir_get_if_local(field.did) {
|
||||
// We are currently checking the type this field came from, so it must be local.
|
||||
Some(Node::Field(field)) => (field.span, field.ty.span),
|
||||
_ => unreachable!("mir field has to correspond to hir field"),
|
||||
|
@ -880,7 +880,7 @@ pub(crate) fn check_item_type(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||
.emit();
|
||||
}
|
||||
|
||||
let item = tcx.hir().foreign_item(item.id);
|
||||
let item = tcx.hir_foreign_item(item.id);
|
||||
match &item.kind {
|
||||
hir::ForeignItemKind::Fn(sig, _, _) => {
|
||||
require_c_abi_if_c_variadic(tcx, sig.decl, abi, item.span);
|
||||
|
@ -1494,7 +1494,7 @@ fn detect_discriminant_duplicate<'tcx>(tcx: TyCtxt<'tcx>, adt: ty::AdtDef<'tcx>)
|
|||
// In the case the discriminant is both a duplicate and overflowed, let the user know
|
||||
if let hir::Node::AnonConst(expr) =
|
||||
tcx.hir_node_by_def_id(discr_def_id.expect_local())
|
||||
&& let hir::ExprKind::Lit(lit) = &tcx.hir().body(expr.body).value.kind
|
||||
&& let hir::ExprKind::Lit(lit) = &tcx.hir_body(expr.body).value.kind
|
||||
&& let rustc_ast::LitKind::Int(lit_value, _int_kind) = &lit.node
|
||||
&& *lit_value != dis.val
|
||||
{
|
||||
|
|
|
@ -658,11 +658,10 @@ pub(super) fn collect_return_position_impl_trait_in_trait_tys<'tcx>(
|
|||
"method `{}` has an incompatible return type for trait",
|
||||
trait_m.name
|
||||
);
|
||||
let hir = tcx.hir();
|
||||
infcx.err_ctxt().note_type_err(
|
||||
&mut diag,
|
||||
&cause,
|
||||
hir.get_if_local(impl_m.def_id)
|
||||
tcx.hir_get_if_local(impl_m.def_id)
|
||||
.and_then(|node| node.fn_decl())
|
||||
.map(|decl| (decl.output.span(), Cow::from("return type in trait"), false)),
|
||||
Some(param_env.and(infer::ValuePairs::Terms(ExpectedFound {
|
||||
|
@ -1123,15 +1122,14 @@ fn check_region_bounds_on_impl_item<'tcx>(
|
|||
// the moment, give a kind of vague error message.
|
||||
if trait_params != impl_params {
|
||||
let span = tcx
|
||||
.hir()
|
||||
.get_generics(impl_m.def_id.expect_local())
|
||||
.hir_get_generics(impl_m.def_id.expect_local())
|
||||
.expect("expected impl item to have generics or else we can't compare them")
|
||||
.span;
|
||||
|
||||
let mut generics_span = None;
|
||||
let mut bounds_span = vec![];
|
||||
let mut where_span = None;
|
||||
if let Some(trait_node) = tcx.hir().get_if_local(trait_m.def_id)
|
||||
if let Some(trait_node) = tcx.hir_get_if_local(trait_m.def_id)
|
||||
&& let Some(trait_generics) = trait_node.generics()
|
||||
{
|
||||
generics_span = Some(trait_generics.span);
|
||||
|
@ -1146,7 +1144,7 @@ fn check_region_bounds_on_impl_item<'tcx>(
|
|||
}
|
||||
}
|
||||
}
|
||||
if let Some(impl_node) = tcx.hir().get_if_local(impl_m.def_id)
|
||||
if let Some(impl_node) = tcx.hir_get_if_local(impl_m.def_id)
|
||||
&& let Some(impl_generics) = impl_node.generics()
|
||||
{
|
||||
let mut impl_bounds = 0;
|
||||
|
|
|
@ -96,7 +96,7 @@ pub(crate) fn check_refining_return_position_impl_trait_in_trait<'tcx>(
|
|||
|
||||
// This opaque also needs to be from the impl method -- otherwise,
|
||||
// it's a refinement to a TAIT.
|
||||
if !tcx.hir().get_if_local(impl_opaque.def_id).is_some_and(|node| {
|
||||
if !tcx.hir_get_if_local(impl_opaque.def_id).is_some_and(|node| {
|
||||
matches!(
|
||||
node.expect_opaque_ty().origin,
|
||||
hir::OpaqueTyOrigin::AsyncFn { parent, .. } | hir::OpaqueTyOrigin::FnReturn { parent, .. }
|
||||
|
@ -327,7 +327,7 @@ fn report_mismatched_rpitit_signature<'tcx>(
|
|||
hir::FnRetTy::Return(ty) => (ty.span, ty.span, "", ""),
|
||||
};
|
||||
let trait_return_span =
|
||||
tcx.hir().get_if_local(trait_m_def_id).map(|node| match node.fn_decl().unwrap().output {
|
||||
tcx.hir_get_if_local(trait_m_def_id).map(|node| match node.fn_decl().unwrap().output {
|
||||
hir::FnRetTy::DefaultReturn(_) => tcx.def_span(trait_m_def_id),
|
||||
hir::FnRetTy::Return(ty) => ty.span,
|
||||
});
|
||||
|
|
|
@ -129,7 +129,7 @@ fn get_owner_return_paths(
|
|||
let hir_id = tcx.local_def_id_to_hir_id(def_id);
|
||||
let parent_id = tcx.hir().get_parent_item(hir_id).def_id;
|
||||
tcx.hir_node_by_def_id(parent_id).body_id().map(|body_id| {
|
||||
let body = tcx.hir().body(body_id);
|
||||
let body = tcx.hir_body(body_id);
|
||||
let mut visitor = ReturnsVisitor::default();
|
||||
visitor.visit_body(body);
|
||||
(parent_id, visitor)
|
||||
|
|
|
@ -424,7 +424,7 @@ fn resolve_expr<'tcx>(visitor: &mut ScopeResolutionVisitor<'tcx>, expr: &'tcx hi
|
|||
// that share the parent environment. We handle const blocks in
|
||||
// `visit_inline_const`.
|
||||
hir::ExprKind::Closure(&hir::Closure { body, .. }) => {
|
||||
let body = visitor.tcx.hir().body(body);
|
||||
let body = visitor.tcx.hir_body(body);
|
||||
visitor.visit_body(body);
|
||||
}
|
||||
hir::ExprKind::AssignOp(_, left_expr, right_expr) => {
|
||||
|
@ -906,7 +906,7 @@ impl<'tcx> Visitor<'tcx> for ScopeResolutionVisitor<'tcx> {
|
|||
resolve_local(self, Some(l.pat), l.init)
|
||||
}
|
||||
fn visit_inline_const(&mut self, c: &'tcx hir::ConstBlock) {
|
||||
let body = self.tcx.hir().body(c.body);
|
||||
let body = self.tcx.hir_body(c.body);
|
||||
self.visit_body(body);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1163,7 +1163,7 @@ fn check_type_defn<'tcx>(
|
|||
// be refactored to check the instantiate-ability of the code better.
|
||||
if let Some(def_id) = def_id.as_local()
|
||||
&& let hir::Node::AnonConst(anon) = tcx.hir_node_by_def_id(def_id)
|
||||
&& let expr = &tcx.hir().body(anon.body).value
|
||||
&& let expr = &tcx.hir_body(anon.body).value
|
||||
&& let hir::ExprKind::Path(hir::QPath::Resolved(None, path)) = expr.kind
|
||||
&& let Res::Def(DefKind::ConstParam, _def_id) = path.res
|
||||
{
|
||||
|
|
|
@ -679,7 +679,7 @@ fn infringing_fields_error<'tcx>(
|
|||
|
||||
suggest_constraining_type_params(
|
||||
tcx,
|
||||
tcx.hir().get_generics(impl_did).expect("impls always have generics"),
|
||||
tcx.hir_get_generics(impl_did).expect("impls always have generics"),
|
||||
&mut err,
|
||||
bounds
|
||||
.iter()
|
||||
|
|
|
@ -25,7 +25,7 @@ pub(crate) fn crate_inherent_impls(
|
|||
let mut collect = InherentCollect { tcx, impls_map: Default::default() };
|
||||
|
||||
let mut res = Ok(());
|
||||
for id in tcx.hir().items() {
|
||||
for id in tcx.hir_free_items() {
|
||||
res = res.and(collect.check_item(id));
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ pub(crate) fn crate_inherent_impls_overlap_check(
|
|||
) -> Result<(), ErrorGuaranteed> {
|
||||
let mut inherent_overlap_checker = InherentOverlapChecker { tcx };
|
||||
let mut res = Ok(());
|
||||
for id in tcx.hir().items() {
|
||||
for id in tcx.hir_free_items() {
|
||||
res = res.and(inherent_overlap_checker.check_item(id));
|
||||
}
|
||||
res
|
||||
|
|
|
@ -669,7 +669,7 @@ fn get_new_lifetime_name<'tcx>(
|
|||
|
||||
#[instrument(level = "debug", skip_all)]
|
||||
fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
||||
let it = tcx.hir().item(item_id);
|
||||
let it = tcx.hir_item(item_id);
|
||||
debug!(item = %it.ident, id = %it.hir_id());
|
||||
let def_id = item_id.owner_id.def_id;
|
||||
let icx = ItemCtxt::new(tcx, def_id);
|
||||
|
@ -683,7 +683,7 @@ fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
|||
| hir::ItemKind::GlobalAsm(_) => {}
|
||||
hir::ItemKind::ForeignMod { items, .. } => {
|
||||
for item in *items {
|
||||
let item = tcx.hir().foreign_item(item.id);
|
||||
let item = tcx.hir_foreign_item(item.id);
|
||||
tcx.ensure_ok().generics_of(item.owner_id);
|
||||
tcx.ensure_ok().type_of(item.owner_id);
|
||||
tcx.ensure_ok().predicates_of(item.owner_id);
|
||||
|
@ -790,7 +790,7 @@ fn lower_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
|||
}
|
||||
|
||||
fn lower_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
|
||||
let trait_item = tcx.hir().trait_item(trait_item_id);
|
||||
let trait_item = tcx.hir_trait_item(trait_item_id);
|
||||
let def_id = trait_item_id.owner_id;
|
||||
tcx.ensure_ok().generics_of(def_id);
|
||||
let icx = ItemCtxt::new(tcx, def_id.def_id);
|
||||
|
@ -865,7 +865,7 @@ fn lower_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
|
|||
tcx.ensure_ok().generics_of(def_id);
|
||||
tcx.ensure_ok().type_of(def_id);
|
||||
tcx.ensure_ok().predicates_of(def_id);
|
||||
let impl_item = tcx.hir().impl_item(impl_item_id);
|
||||
let impl_item = tcx.hir_impl_item(impl_item_id);
|
||||
let icx = ItemCtxt::new(tcx, def_id.def_id);
|
||||
match impl_item.kind {
|
||||
hir::ImplItemKind::Fn(..) => {
|
||||
|
@ -1769,7 +1769,7 @@ fn coroutine_for_closure(tcx: TyCtxt<'_>, def_id: LocalDefId) -> DefId {
|
|||
..
|
||||
}),
|
||||
..
|
||||
} = tcx.hir().body(body).value
|
||||
} = tcx.hir_body(body).value
|
||||
else {
|
||||
bug!()
|
||||
};
|
||||
|
|
|
@ -52,7 +52,7 @@ pub(crate) fn predicates_and_item_bounds(tcx: TyCtxt<'_>) {
|
|||
}
|
||||
|
||||
pub(crate) fn def_parents(tcx: TyCtxt<'_>) {
|
||||
for iid in tcx.hir().items() {
|
||||
for iid in tcx.hir_free_items() {
|
||||
let did = iid.owner_id.def_id;
|
||||
if tcx.has_attr(did, sym::rustc_dump_def_parents) {
|
||||
struct AnonConstFinder<'tcx> {
|
||||
|
@ -77,7 +77,7 @@ pub(crate) fn def_parents(tcx: TyCtxt<'_>) {
|
|||
// the `rustc_dump_def_parents` attribute to the anon const so it would not be possible
|
||||
// to see what its def parent is.
|
||||
let mut anon_ct_finder = AnonConstFinder { tcx, anon_consts: vec![] };
|
||||
intravisit::walk_item(&mut anon_ct_finder, tcx.hir().item(iid));
|
||||
intravisit::walk_item(&mut anon_ct_finder, tcx.hir_item(iid));
|
||||
|
||||
for did in [did].into_iter().chain(anon_ct_finder.anon_consts) {
|
||||
let span = tcx.def_span(did);
|
||||
|
@ -99,14 +99,14 @@ pub(crate) fn def_parents(tcx: TyCtxt<'_>) {
|
|||
}
|
||||
|
||||
pub(crate) fn vtables<'tcx>(tcx: TyCtxt<'tcx>) {
|
||||
for id in tcx.hir().items() {
|
||||
for id in tcx.hir_free_items() {
|
||||
let def_id = id.owner_id.def_id;
|
||||
|
||||
let Some(attr) = tcx.get_attr(def_id, sym::rustc_dump_vtable) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let vtable_entries = match tcx.hir().item(id).kind {
|
||||
let vtable_entries = match tcx.hir_item(id).kind {
|
||||
hir::ItemKind::Impl(hir::Impl { of_trait: Some(_), .. }) => {
|
||||
let trait_ref = tcx.impl_trait_ref(def_id).unwrap().instantiate_identity();
|
||||
if trait_ref.has_non_region_param() {
|
||||
|
|
|
@ -427,7 +427,7 @@ impl<'a, 'tcx> Visitor<'tcx> for BoundVarContext<'a, 'tcx> {
|
|||
}
|
||||
|
||||
fn visit_nested_body(&mut self, body: hir::BodyId) {
|
||||
let body = self.tcx.hir().body(body);
|
||||
let body = self.tcx.hir_body(body);
|
||||
self.with(Scope::Body { id: body.id(), s: self.scope }, |this| {
|
||||
this.visit_body(body);
|
||||
});
|
||||
|
@ -1049,7 +1049,7 @@ fn object_lifetime_default(tcx: TyCtxt<'_>, param_def_id: LocalDefId) -> ObjectL
|
|||
match param.source {
|
||||
hir::GenericParamSource::Generics => {
|
||||
let parent_def_id = tcx.local_parent(param_def_id);
|
||||
let generics = tcx.hir().get_generics(parent_def_id).unwrap();
|
||||
let generics = tcx.hir_get_generics(parent_def_id).unwrap();
|
||||
let param_hir_id = tcx.local_def_id_to_hir_id(param_def_id);
|
||||
let param = generics.params.iter().find(|p| p.hir_id == param_hir_id).unwrap();
|
||||
|
||||
|
@ -1250,7 +1250,7 @@ impl<'a, 'tcx> BoundVarContext<'a, 'tcx> {
|
|||
if let Some(hir::PredicateOrigin::ImplTrait) = where_bound_origin
|
||||
&& let hir::LifetimeName::Param(param_id) = lifetime_ref.res
|
||||
&& let Some(generics) =
|
||||
self.tcx.hir().get_generics(self.tcx.local_parent(param_id))
|
||||
self.tcx.hir_get_generics(self.tcx.local_parent(param_id))
|
||||
&& let Some(param) = generics.params.iter().find(|p| p.def_id == param_id)
|
||||
&& param.is_elided_lifetime()
|
||||
&& !self.tcx.asyncness(lifetime_ref.hir_id.owner.def_id).is_async()
|
||||
|
@ -1264,7 +1264,7 @@ impl<'a, 'tcx> BoundVarContext<'a, 'tcx> {
|
|||
);
|
||||
|
||||
if let Some(generics) =
|
||||
self.tcx.hir().get_generics(lifetime_ref.hir_id.owner.def_id)
|
||||
self.tcx.hir_get_generics(lifetime_ref.hir_id.owner.def_id)
|
||||
{
|
||||
let new_param_sugg =
|
||||
if let Some(span) = generics.span_for_lifetime_suggestion() {
|
||||
|
@ -2266,7 +2266,7 @@ fn is_late_bound_map(
|
|||
owner_id: hir::OwnerId,
|
||||
) -> Option<&FxIndexSet<hir::ItemLocalId>> {
|
||||
let sig = tcx.hir().fn_sig_by_hir_id(owner_id.into())?;
|
||||
let generics = tcx.hir().get_generics(owner_id.def_id)?;
|
||||
let generics = tcx.hir_get_generics(owner_id.def_id)?;
|
||||
|
||||
let mut late_bound = FxIndexSet::default();
|
||||
|
||||
|
|
|
@ -451,7 +451,7 @@ fn infer_placeholder_type<'tcx>(
|
|||
);
|
||||
} else {
|
||||
with_forced_trimmed_paths!(err.span_note(
|
||||
tcx.hir().body(body_id).value.span,
|
||||
tcx.hir_body(body_id).value.span,
|
||||
format!("however, the inferred type `{ty}` cannot be named"),
|
||||
));
|
||||
}
|
||||
|
@ -494,7 +494,7 @@ fn infer_placeholder_type<'tcx>(
|
|||
);
|
||||
} else {
|
||||
with_forced_trimmed_paths!(diag.span_note(
|
||||
tcx.hir().body(body_id).value.span,
|
||||
tcx.hir_body(body_id).value.span,
|
||||
format!("however, the inferred type `{ty}` cannot be named"),
|
||||
));
|
||||
}
|
||||
|
|
|
@ -451,7 +451,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
|
|||
)
|
||||
});
|
||||
|
||||
let fn_sig = self.tcx.hir().get_if_local(self.def_id).and_then(hir::Node::fn_sig);
|
||||
let fn_sig = self.tcx.hir_get_if_local(self.def_id).and_then(hir::Node::fn_sig);
|
||||
let is_used_in_input = |def_id| {
|
||||
fn_sig.is_some_and(|fn_sig| {
|
||||
fn_sig.decl.inputs.iter().any(|ty| match ty.kind {
|
||||
|
|
|
@ -225,7 +225,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
|||
&& let item_def_id =
|
||||
tcx.hir().get_parent_item(tcx.local_def_id_to_hir_id(ty_param_def_id))
|
||||
// FIXME: ...which obviously won't have any generics.
|
||||
&& let Some(generics) = tcx.hir().get_generics(item_def_id.def_id)
|
||||
&& let Some(generics) = tcx.hir_get_generics(item_def_id.def_id)
|
||||
{
|
||||
// FIXME: Suggest adding supertrait bounds if we have a `Self` type param.
|
||||
// FIXME(trait_alias): Suggest adding `Self: Trait` to
|
||||
|
|
|
@ -110,7 +110,7 @@ fn generic_arg_mismatch_err(
|
|||
err.help(format!("`{}` is a function item, not a type", tcx.item_name(id)));
|
||||
err.help("function item types cannot be named directly");
|
||||
} else if let hir::ConstArgKind::Anon(anon) = cnst.kind
|
||||
&& let body = tcx.hir().body(anon.body)
|
||||
&& let body = tcx.hir_body(anon.body)
|
||||
&& let rustc_hir::ExprKind::Path(rustc_hir::QPath::Resolved(_, path)) =
|
||||
body.value.kind
|
||||
&& let Res::Def(DefKind::Fn { .. }, id) = path.res
|
||||
|
|
|
@ -1976,7 +1976,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
|||
if let Some(hir::Node::Item(&hir::Item {
|
||||
kind: hir::ItemKind::Impl(impl_),
|
||||
..
|
||||
})) = tcx.hir().get_if_local(def_id)
|
||||
})) = tcx.hir_get_if_local(def_id)
|
||||
{
|
||||
err.span_note(impl_.self_ty.span, "not a concrete type");
|
||||
}
|
||||
|
@ -2213,7 +2213,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
|||
fn lower_anon_const(&self, anon: &AnonConst) -> Const<'tcx> {
|
||||
let tcx = self.tcx();
|
||||
|
||||
let expr = &tcx.hir().body(anon.body).value;
|
||||
let expr = &tcx.hir_body(anon.body).value;
|
||||
debug!(?expr);
|
||||
|
||||
let ty = tcx
|
||||
|
|
|
@ -3,7 +3,7 @@ use rustc_middle::ty::{self, TyCtxt};
|
|||
use rustc_span::sym;
|
||||
|
||||
pub(crate) fn inferred_outlives(tcx: TyCtxt<'_>) {
|
||||
for id in tcx.hir().items() {
|
||||
for id in tcx.hir_free_items() {
|
||||
if !tcx.has_attr(id.owner_id, sym::rustc_outlives) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ pub(super) fn infer_predicates(
|
|||
let mut predicates_added = false;
|
||||
|
||||
// Visit all the crates and infer predicates
|
||||
for id in tcx.hir().items() {
|
||||
for id in tcx.hir_free_items() {
|
||||
let item_did = id.owner_id;
|
||||
|
||||
debug!("InferVisitor::visit_item(item={:?})", item_did);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue