Skip to content

Commit 9e63e99

Browse files
committed
Prepare for CrateNum query feeding on creation
1 parent 0025c9c commit 9e63e99

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

compiler/rustc_metadata/src/creader.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc_fs_util::try_canonicalize;
1616
use rustc_hir::def_id::{CrateNum, LocalDefId, StableCrateId, LOCAL_CRATE};
1717
use rustc_hir::definitions::Definitions;
1818
use rustc_index::IndexVec;
19-
use rustc_middle::ty::TyCtxt;
19+
use rustc_middle::ty::{TyCtxt, TyCtxtFeed};
2020
use rustc_session::config::{self, CrateType, ExternLocation};
2121
use rustc_session::cstore::{CrateDepKind, CrateSource, ExternCrate, ExternCrateSource};
2222
use rustc_session::lint;
@@ -166,7 +166,7 @@ impl CStore {
166166
&mut self,
167167
root: &CrateRoot,
168168
tcx: TyCtxt<'tcx>,
169-
) -> Result<CrateNum, CrateError> {
169+
) -> Result<TyCtxtFeed<'tcx, CrateNum>, CrateError> {
170170
assert_eq!(self.metas.len(), tcx.untracked().stable_crate_ids.read().len());
171171
let num = tcx.create_crate_num(root.stable_crate_id()).map_err(|existing| {
172172
// Check for (potential) conflicts with the local crate
@@ -409,7 +409,8 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
409409
let private_dep = self.is_private_dep(name.as_str(), private_dep);
410410

411411
// Claim this crate number and cache it
412-
let cnum = self.cstore.intern_stable_crate_id(&crate_root, self.tcx)?;
412+
let feed = self.cstore.intern_stable_crate_id(&crate_root, self.tcx)?;
413+
let cnum = feed.key();
413414

414415
info!(
415416
"register crate `{}` (cnum = {}. private_dep = {})",

compiler/rustc_middle/src/ty/context.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,14 +1261,17 @@ impl<'tcx> TyCtxt<'tcx> {
12611261
feed
12621262
}
12631263

1264-
pub fn create_crate_num(self, stable_crate_id: StableCrateId) -> Result<CrateNum, CrateNum> {
1264+
pub fn create_crate_num(
1265+
self,
1266+
stable_crate_id: StableCrateId,
1267+
) -> Result<TyCtxtFeed<'tcx, CrateNum>, CrateNum> {
12651268
if let Some(&existing) = self.untracked().stable_crate_ids.read().get(&stable_crate_id) {
12661269
return Err(existing);
12671270
}
12681271

12691272
let num = CrateNum::new(self.untracked().stable_crate_ids.read().len());
12701273
self.untracked().stable_crate_ids.write().insert(stable_crate_id, num);
1271-
Ok(num)
1274+
Ok(TyCtxtFeed { key: num, tcx: self })
12721275
}
12731276

12741277
pub fn iter_local_def_id(self) -> impl Iterator<Item = LocalDefId> + 'tcx {

0 commit comments

Comments
 (0)