mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Use tcx.local_parent() more often
This commit is contained in:
@@ -107,7 +107,7 @@ fn gather_explicit_predicates_of(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::Gen
|
||||
);
|
||||
|
||||
return ty::GenericPredicates {
|
||||
parent: Some(tcx.parent(def_id.to_def_id())),
|
||||
parent: Some(tcx.local_parent(def_id).to_def_id()),
|
||||
predicates: tcx.arena.alloc_from_iter(predicates),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -380,8 +380,8 @@ fn mark_live_symbols(&mut self) -> <MarkSymbolVisitor<'tcx> as Visitor<'tcx>>::R
|
||||
/// for discussion).
|
||||
fn should_ignore_impl_item(&mut self, impl_item: &hir::ImplItem<'_>) -> bool {
|
||||
if let hir::ImplItemImplKind::Trait { .. } = impl_item.impl_kind
|
||||
&& let impl_of = self.tcx.parent(impl_item.owner_id.to_def_id())
|
||||
&& self.tcx.is_automatically_derived(impl_of)
|
||||
&& let impl_of = self.tcx.local_parent(impl_item.owner_id.def_id)
|
||||
&& self.tcx.is_automatically_derived(impl_of.to_def_id())
|
||||
&& let trait_ref = self.tcx.impl_trait_ref(impl_of).instantiate_identity()
|
||||
&& find_attr!(self.tcx, trait_ref.def_id, RustcTrivialFieldReads)
|
||||
{
|
||||
|
||||
@@ -516,9 +516,8 @@ pub fn emit_inference_failure_err_with_type_hint(
|
||||
|
||||
let Some(InferSource { span, kind }) = local_visitor.infer_source else {
|
||||
let silence = if let DefKind::AssocFn = self.tcx.def_kind(body_def_id)
|
||||
&& let parent = self.tcx.parent(body_def_id.into())
|
||||
&& self.tcx.is_automatically_derived(parent)
|
||||
&& let Some(parent) = parent.as_local()
|
||||
&& let parent = self.tcx.local_parent(body_def_id)
|
||||
&& self.tcx.is_automatically_derived(parent.to_def_id())
|
||||
&& let hir::Node::Item(item) = self.tcx.hir_node_by_def_id(parent)
|
||||
&& let hir::ItemKind::Impl(imp) = item.kind
|
||||
&& let hir::TyKind::Path(hir::QPath::Resolved(_, path)) = imp.self_ty.kind
|
||||
|
||||
@@ -1966,10 +1966,9 @@ pub(super) fn suggest_impl_trait(
|
||||
|
||||
let mut span = obligation.cause.span;
|
||||
if let DefKind::Closure = self.tcx.def_kind(obligation.cause.body_id)
|
||||
&& let parent = self.tcx.parent(obligation.cause.body_id.into())
|
||||
&& let parent = self.tcx.local_parent(obligation.cause.body_id)
|
||||
&& let DefKind::Fn | DefKind::AssocFn = self.tcx.def_kind(parent)
|
||||
&& self.tcx.asyncness(parent).is_async()
|
||||
&& let Some(parent) = parent.as_local()
|
||||
&& let Node::Item(hir::Item { kind: hir::ItemKind::Fn { sig: fn_sig, .. }, .. })
|
||||
| Node::ImplItem(hir::ImplItem { kind: hir::ImplItemKind::Fn(fn_sig, _), .. })
|
||||
| Node::TraitItem(hir::TraitItem {
|
||||
|
||||
@@ -332,7 +332,7 @@ fn check_body(&mut self, cx: &LateContext<'tcx>, body: &Body<'tcx>) {
|
||||
if let ImplItemImplKind::Trait { trait_item_def_id, .. } = impl_kind
|
||||
&& let Ok(trait_item_id) = trait_item_def_id
|
||||
{
|
||||
let impl_id = cx.tcx.parent(owner_id.into());
|
||||
let impl_id = cx.tcx.local_parent(owner_id.def_id);
|
||||
let trait_ref = cx.tcx.impl_trait_ref(impl_id).instantiate_identity();
|
||||
(
|
||||
trait_item_id,
|
||||
|
||||
Reference in New Issue
Block a user