Skip to content

Commit 2864d94

Browse files
committed
Prepare for CrateNum query feeding on creation
1 parent e8b5a61 commit 2864d94

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
@@ -1173,14 +1173,17 @@ impl<'tcx> TyCtxt<'tcx> {
11731173
feed
11741174
}
11751175

1176-
pub fn create_crate_num(self, stable_crate_id: StableCrateId) -> Result<CrateNum, CrateNum> {
1176+
pub fn create_crate_num(
1177+
self,
1178+
stable_crate_id: StableCrateId,
1179+
) -> Result<TyCtxtFeed<'tcx, CrateNum>, CrateNum> {
11771180
if let Some(&existing) = self.untracked().stable_crate_ids.read().get(&stable_crate_id) {
11781181
return Err(existing);
11791182
}
11801183

11811184
let num = CrateNum::new(self.untracked().stable_crate_ids.read().len());
11821185
self.untracked().stable_crate_ids.write().insert(stable_crate_id, num);
1183-
Ok(num)
1186+
Ok(TyCtxtFeed { key: num, tcx: self })
11841187
}
11851188

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

0 commit comments

Comments
 (0)