Rollup merge of #144448 - camsteffen:defaultness-impl-trait-only, r=compiler-errors

Limit defaultness query to impl of trait

I separated this out from https://github.com/rust-lang/rust/pull/144386.
This commit is contained in:
Matthias Krüger
2025-07-26 15:28:02 +02:00
committed by GitHub
2 changed files with 7 additions and 4 deletions

View File

@@ -2124,11 +2124,11 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
}; };
let def_id = id.owner_id.to_def_id(); let def_id = id.owner_id.to_def_id();
self.tables.defaultness.set_some(def_id.index, tcx.defaultness(def_id));
if of_trait && let Some(header) = tcx.impl_trait_header(def_id) { if of_trait && let Some(header) = tcx.impl_trait_header(def_id) {
record!(self.tables.impl_trait_header[def_id] <- header); record!(self.tables.impl_trait_header[def_id] <- header);
self.tables.defaultness.set_some(def_id.index, tcx.defaultness(def_id));
let trait_ref = header.trait_ref.instantiate_identity(); let trait_ref = header.trait_ref.instantiate_identity();
let simplified_self_ty = fast_reject::simplify_type( let simplified_self_ty = fast_reject::simplify_type(
self.tcx, self.tcx,

View File

@@ -80,8 +80,11 @@ fn sizedness_constraint_for_ty<'tcx>(
fn defaultness(tcx: TyCtxt<'_>, def_id: LocalDefId) -> hir::Defaultness { fn defaultness(tcx: TyCtxt<'_>, def_id: LocalDefId) -> hir::Defaultness {
match tcx.hir_node_by_def_id(def_id) { match tcx.hir_node_by_def_id(def_id) {
hir::Node::Item(hir::Item { kind: hir::ItemKind::Impl(impl_), .. }) => impl_.defaultness, hir::Node::Item(hir::Item {
hir::Node::ImplItem(hir::ImplItem { defaultness, .. }) kind: hir::ItemKind::Impl(hir::Impl { defaultness, of_trait: Some(_), .. }),
..
})
| hir::Node::ImplItem(hir::ImplItem { defaultness, .. })
| hir::Node::TraitItem(hir::TraitItem { defaultness, .. }) => *defaultness, | hir::Node::TraitItem(hir::TraitItem { defaultness, .. }) => *defaultness,
node => { node => {
bug!("`defaultness` called on {:?}", node); bug!("`defaultness` called on {:?}", node);