Skip to content

Commit

Permalink
Auto merge of #83082 - cjgillot:defkey-ii, r=oli-obk
Browse files Browse the repository at this point in the history
Iterate on crate_inherent_impls for metadata.

Split from #80347

r? `@oli-obk`
  • Loading branch information
bors committed Mar 14, 2021
2 parents 84c08f8 + ab17829 commit 9320b12
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions compiler/rustc_metadata/src/rmeta/encoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -865,6 +865,17 @@ impl EncodeContext<'a, 'tcx> {
self.encode_deprecation(def_id);
}
}
let inherent_impls = tcx.crate_inherent_impls(LOCAL_CRATE);
for (def_id, implementations) in inherent_impls.inherent_impls.iter() {
assert!(def_id.is_local());
if implementations.is_empty() {
continue;
}
record!(self.tables.inherent_impls[def_id] <- implementations.iter().map(|&def_id| {
assert!(def_id.is_local());
def_id.index
}));
}
}

fn encode_variances_of(&mut self, def_id: DefId) {
Expand Down Expand Up @@ -1237,18 +1248,6 @@ impl EncodeContext<'a, 'tcx> {
}
}

// Encodes the inherent implementations of a structure, enumeration, or trait.
fn encode_inherent_implementations(&mut self, def_id: DefId) {
debug!("EncodeContext::encode_inherent_implementations({:?})", def_id);
let implementations = self.tcx.inherent_impls(def_id);
if !implementations.is_empty() {
record!(self.tables.inherent_impls[def_id] <- implementations.iter().map(|&def_id| {
assert!(def_id.is_local());
def_id.index
}));
}
}

fn encode_stability(&mut self, def_id: DefId) {
debug!("EncodeContext::encode_stability({:?})", def_id);

Expand Down Expand Up @@ -1459,7 +1458,6 @@ impl EncodeContext<'a, 'tcx> {
record!(self.tables.impl_trait_ref[def_id] <- trait_ref);
}
}
self.encode_inherent_implementations(def_id);
match item.kind {
hir::ItemKind::Enum(..)
| hir::ItemKind::Struct(..)
Expand Down Expand Up @@ -1822,7 +1820,6 @@ impl EncodeContext<'a, 'tcx> {
}
self.encode_ident_span(def_id, nitem.ident);
self.encode_item_type(def_id);
self.encode_inherent_implementations(def_id);
if let hir::ForeignItemKind::Fn(..) = nitem.kind {
record!(self.tables.fn_sig[def_id] <- tcx.fn_sig(def_id));
self.encode_variances_of(def_id);
Expand Down

0 comments on commit 9320b12

Please sign in to comment.