Rollup merge of #93746 - cjgillot:nodefii, r=nikomatsakis

Remove defaultness from ImplItem.

This information is not really used anywhere, except HIR pretty-printing. This makes ImplItem and TraitItem more similar.
This commit is contained in:
Yuki Okushi 2022-02-09 14:12:22 +09:00 committed by GitHub
commit e5ac08779b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 11 additions and 21 deletions

View File

@ -894,9 +894,6 @@ fn lower_impl_item(&mut self, i: &AssocItem) -> &'hir hir::ImplItem<'hir> {
AssocItemKind::MacCall(..) => panic!("`TyMac` should have been expanded by now"), AssocItemKind::MacCall(..) => panic!("`TyMac` should have been expanded by now"),
}; };
// Since `default impl` is not yet implemented, this is always true in impls.
let has_value = true;
let (defaultness, _) = self.lower_defaultness(i.kind.defaultness(), has_value);
let hir_id = self.lower_node_id(i.id); let hir_id = self.lower_node_id(i.id);
self.lower_attrs(hir_id, &i.attrs); self.lower_attrs(hir_id, &i.attrs);
let item = hir::ImplItem { let item = hir::ImplItem {
@ -904,7 +901,6 @@ fn lower_impl_item(&mut self, i: &AssocItem) -> &'hir hir::ImplItem<'hir> {
ident: self.lower_ident(i.ident), ident: self.lower_ident(i.ident),
generics, generics,
vis: self.lower_visibility(&i.vis), vis: self.lower_visibility(&i.vis),
defaultness,
kind, kind,
span: self.lower_span(i.span), span: self.lower_span(i.span),
}; };

View File

@ -2112,7 +2112,6 @@ pub struct ImplItem<'hir> {
pub ident: Ident, pub ident: Ident,
pub def_id: LocalDefId, pub def_id: LocalDefId,
pub vis: Visibility<'hir>, pub vis: Visibility<'hir>,
pub defaultness: Defaultness,
pub generics: Generics<'hir>, pub generics: Generics<'hir>,
pub kind: ImplItemKind<'hir>, pub kind: ImplItemKind<'hir>,
pub span: Span, pub span: Span,
@ -3310,6 +3309,6 @@ mod size_asserts {
rustc_data_structures::static_assert_size!(super::Item<'static>, 184); rustc_data_structures::static_assert_size!(super::Item<'static>, 184);
rustc_data_structures::static_assert_size!(super::TraitItem<'static>, 128); rustc_data_structures::static_assert_size!(super::TraitItem<'static>, 128);
rustc_data_structures::static_assert_size!(super::ImplItem<'static>, 152); rustc_data_structures::static_assert_size!(super::ImplItem<'static>, 144);
rustc_data_structures::static_assert_size!(super::ForeignItem<'static>, 136); rustc_data_structures::static_assert_size!(super::ForeignItem<'static>, 136);
} }

View File

@ -1020,12 +1020,10 @@ pub fn walk_trait_item_ref<'v, V: Visitor<'v>>(visitor: &mut V, trait_item_ref:
pub fn walk_impl_item<'v, V: Visitor<'v>>(visitor: &mut V, impl_item: &'v ImplItem<'v>) { pub fn walk_impl_item<'v, V: Visitor<'v>>(visitor: &mut V, impl_item: &'v ImplItem<'v>) {
// N.B., deliberately force a compilation error if/when new fields are added. // N.B., deliberately force a compilation error if/when new fields are added.
let ImplItem { def_id: _, ident, ref vis, ref defaultness, ref generics, ref kind, span: _ } = let ImplItem { def_id: _, ident, ref vis, ref generics, ref kind, span: _ } = *impl_item;
*impl_item;
visitor.visit_ident(ident); visitor.visit_ident(ident);
visitor.visit_vis(vis); visitor.visit_vis(vis);
visitor.visit_defaultness(defaultness);
visitor.visit_generics(generics); visitor.visit_generics(generics);
match *kind { match *kind {
ImplItemKind::Const(ref ty, body) => { ImplItemKind::Const(ref ty, body) => {

View File

@ -164,13 +164,11 @@ fn hash_stable(&self, hcx: &mut HirCtx, hasher: &mut StableHasher) {
impl<HirCtx: crate::HashStableContext> HashStable<HirCtx> for ImplItem<'_> { impl<HirCtx: crate::HashStableContext> HashStable<HirCtx> for ImplItem<'_> {
fn hash_stable(&self, hcx: &mut HirCtx, hasher: &mut StableHasher) { fn hash_stable(&self, hcx: &mut HirCtx, hasher: &mut StableHasher) {
let ImplItem { def_id: _, ident, ref vis, defaultness, ref generics, ref kind, span } = let ImplItem { def_id: _, ident, ref vis, ref generics, ref kind, span } = *self;
*self;
hcx.hash_hir_item_like(|hcx| { hcx.hash_hir_item_like(|hcx| {
ident.name.hash_stable(hcx, hasher); ident.name.hash_stable(hcx, hasher);
vis.hash_stable(hcx, hasher); vis.hash_stable(hcx, hasher);
defaultness.hash_stable(hcx, hasher);
generics.hash_stable(hcx, hasher); generics.hash_stable(hcx, hasher);
kind.hash_stable(hcx, hasher); kind.hash_stable(hcx, hasher);
span.hash_stable(hcx, hasher); span.hash_stable(hcx, hasher);

View File

@ -923,7 +923,6 @@ pub fn print_impl_item(&mut self, ii: &hir::ImplItem<'_>) {
self.hardbreak_if_not_bol(); self.hardbreak_if_not_bol();
self.maybe_print_comment(ii.span.lo()); self.maybe_print_comment(ii.span.lo());
self.print_outer_attributes(self.attrs(ii.hir_id())); self.print_outer_attributes(self.attrs(ii.hir_id()));
self.print_defaultness(ii.defaultness);
match ii.kind { match ii.kind {
hir::ImplItemKind::Const(ref ty, expr) => { hir::ImplItemKind::Const(ref ty, expr) => {

View File

@ -1015,7 +1015,8 @@ fn clean(&self, cx: &mut DocContext<'_>) -> Item {
{ {
m.header.constness = hir::Constness::NotConst; m.header.constness = hir::Constness::NotConst;
} }
MethodItem(m, Some(self.defaultness)) let defaultness = cx.tcx.associated_item(self.def_id).defaultness;
MethodItem(m, Some(defaultness))
} }
hir::ImplItemKind::TyAlias(ref hir_ty) => { hir::ImplItemKind::TyAlias(ref hir_ty) => {
let type_ = hir_ty.clean(cx); let type_ = hir_ty.clean(cx);

View File

@ -358,7 +358,9 @@ pub trait AddDefaultTrait {
#[cfg(any(cfail1,cfail4))] #[cfg(any(cfail1,cfail4))]
impl AddDefaultTrait for Foo { impl AddDefaultTrait for Foo {
// ------------------------------------------------------------------------------------------- // ----------------------------------------------------
// -------------------------
// ----------------------------------------------------
// ------------------------- // -------------------------
fn method_name() { } fn method_name() { }
} }
@ -369,9 +371,9 @@ fn method_name() { }
#[rustc_clean(except="hir_owner,hir_owner_nodes", cfg="cfail5")] #[rustc_clean(except="hir_owner,hir_owner_nodes", cfg="cfail5")]
#[rustc_clean(cfg="cfail6")] #[rustc_clean(cfg="cfail6")]
impl AddDefaultTrait for Foo { impl AddDefaultTrait for Foo {
#[rustc_clean(except="hir_owner,hir_owner_nodes,associated_item", cfg="cfail2")] #[rustc_clean(except="associated_item", cfg="cfail2")]
#[rustc_clean(cfg="cfail3")] #[rustc_clean(cfg="cfail3")]
#[rustc_clean(except="hir_owner,hir_owner_nodes,associated_item,optimized_mir", cfg="cfail5")] #[rustc_clean(except="associated_item", cfg="cfail5")]
#[rustc_clean(cfg="cfail6")] #[rustc_clean(cfg="cfail6")]
default fn method_name() { } default fn method_name() { }
} }

View File

@ -54,9 +54,6 @@ fn check_impl_item(&mut self, cx: &LateContext<'tcx>, item: &'tcx hir::ImplItem<
), ),
hir::VisibilityKind::Inherited => println!("visibility inherited from outer item"), hir::VisibilityKind::Inherited => println!("visibility inherited from outer item"),
} }
if item.defaultness.is_default() {
println!("default");
}
match item.kind { match item.kind {
hir::ImplItemKind::Const(_, body_id) => { hir::ImplItemKind::Const(_, body_id) => {
println!("associated constant"); println!("associated constant");