Skip to content

Commit e8e227a

Browse files
committed
Prepare crate loader for LockGuard
1 parent d191de6 commit e8e227a

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

compiler/rustc_resolve/src/build_reduced_graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
852852
} else if orig_name == Some(kw::SelfLower) {
853853
Some(self.r.graph_root)
854854
} else {
855-
let crate_id = self.r.crate_loader().process_extern_crate(item, local_def_id);
855+
let crate_id = self.r.crate_loader(|c| c.process_extern_crate(item, local_def_id));
856856
crate_id.map(|crate_id| {
857857
self.r.extern_crate_map.insert(local_def_id, crate_id);
858858
self.r.expect_module(crate_id.as_def_id())

compiler/rustc_resolve/src/diagnostics.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1315,7 +1315,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
13151315
// otherwise cause duplicate suggestions.
13161316
continue;
13171317
}
1318-
let crate_id = self.crate_loader().maybe_process_path_extern(ident.name);
1318+
let crate_id = self.crate_loader(|c| c.maybe_process_path_extern(ident.name));
13191319
if let Some(crate_id) = crate_id {
13201320
let crate_root = self.expect_module(crate_id.as_def_id());
13211321
suggestions.extend(self.lookup_import_candidates_from_module(

compiler/rustc_resolve/src/late/diagnostics.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,8 +1700,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
17001700
let extern_prelude = self.r.extern_prelude.clone();
17011701
names.extend(extern_prelude.iter().flat_map(|(ident, _)| {
17021702
self.r
1703-
.crate_loader()
1704-
.maybe_process_path_extern(ident.name)
1703+
.crate_loader(|c| c.maybe_process_path_extern(ident.name))
17051704
.and_then(|crate_id| {
17061705
let crate_mod =
17071706
Res::Def(DefKind::Mod, crate_id.as_def_id());

compiler/rustc_resolve/src/lib.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1482,15 +1482,15 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
14821482
StableHashingContext::new(self.tcx.sess, &self.untracked)
14831483
}
14841484

1485-
fn crate_loader(&mut self) -> CrateLoader<'_> {
1486-
CrateLoader::new(
1485+
fn crate_loader<T>(&mut self, f: impl FnOnce(&mut CrateLoader<'_>) -> T) -> T {
1486+
f(&mut CrateLoader::new(
14871487
&self.tcx.sess,
14881488
&*self.metadata_loader,
14891489
self.local_crate_name,
14901490
&mut *self.untracked.cstore.untracked_as_any().downcast_mut().unwrap(),
14911491
self.untracked.definitions.read(),
14921492
&mut self.used_extern_options,
1493-
)
1493+
))
14941494
}
14951495

14961496
fn cstore(&self) -> &CStore {
@@ -1539,7 +1539,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
15391539
self.tcx.sess.time("resolve_main", || self.resolve_main());
15401540
self.tcx.sess.time("resolve_check_unused", || self.check_unused(krate));
15411541
self.tcx.sess.time("resolve_report_errors", || self.report_errors(krate));
1542-
self.tcx.sess.time("resolve_postprocess", || self.crate_loader().postprocess(krate));
1542+
self.tcx
1543+
.sess
1544+
.time("resolve_postprocess", || self.crate_loader(|c| c.postprocess(krate)));
15431545
});
15441546
}
15451547

@@ -1879,10 +1881,10 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
18791881
} else {
18801882
let crate_id = if finalize {
18811883
let Some(crate_id) =
1882-
self.crate_loader().process_path_extern(ident.name, ident.span) else { return Some(self.dummy_binding); };
1884+
self.crate_loader(|c| c.process_path_extern(ident.name, ident.span)) else { return Some(self.dummy_binding); };
18831885
crate_id
18841886
} else {
1885-
self.crate_loader().maybe_process_path_extern(ident.name)?
1887+
self.crate_loader(|c| c.maybe_process_path_extern(ident.name))?
18861888
};
18871889
let crate_root = self.expect_module(crate_id.as_def_id());
18881890
let vis = ty::Visibility::<LocalDefId>::Public;

0 commit comments

Comments
 (0)