Prepare crate loader for LockGuard
This commit is contained in:
parent
d191de63f0
commit
e8e227aec8
4 changed files with 11 additions and 10 deletions
|
@ -852,7 +852,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
} else if orig_name == Some(kw::SelfLower) {
|
} else if orig_name == Some(kw::SelfLower) {
|
||||||
Some(self.r.graph_root)
|
Some(self.r.graph_root)
|
||||||
} else {
|
} else {
|
||||||
let crate_id = self.r.crate_loader().process_extern_crate(item, local_def_id);
|
let crate_id = self.r.crate_loader(|c| c.process_extern_crate(item, local_def_id));
|
||||||
crate_id.map(|crate_id| {
|
crate_id.map(|crate_id| {
|
||||||
self.r.extern_crate_map.insert(local_def_id, crate_id);
|
self.r.extern_crate_map.insert(local_def_id, crate_id);
|
||||||
self.r.expect_module(crate_id.as_def_id())
|
self.r.expect_module(crate_id.as_def_id())
|
||||||
|
|
|
@ -1315,7 +1315,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
// otherwise cause duplicate suggestions.
|
// otherwise cause duplicate suggestions.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let crate_id = self.crate_loader().maybe_process_path_extern(ident.name);
|
let crate_id = self.crate_loader(|c| c.maybe_process_path_extern(ident.name));
|
||||||
if let Some(crate_id) = crate_id {
|
if let Some(crate_id) = crate_id {
|
||||||
let crate_root = self.expect_module(crate_id.as_def_id());
|
let crate_root = self.expect_module(crate_id.as_def_id());
|
||||||
suggestions.extend(self.lookup_import_candidates_from_module(
|
suggestions.extend(self.lookup_import_candidates_from_module(
|
||||||
|
|
|
@ -1700,8 +1700,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
||||||
let extern_prelude = self.r.extern_prelude.clone();
|
let extern_prelude = self.r.extern_prelude.clone();
|
||||||
names.extend(extern_prelude.iter().flat_map(|(ident, _)| {
|
names.extend(extern_prelude.iter().flat_map(|(ident, _)| {
|
||||||
self.r
|
self.r
|
||||||
.crate_loader()
|
.crate_loader(|c| c.maybe_process_path_extern(ident.name))
|
||||||
.maybe_process_path_extern(ident.name)
|
|
||||||
.and_then(|crate_id| {
|
.and_then(|crate_id| {
|
||||||
let crate_mod =
|
let crate_mod =
|
||||||
Res::Def(DefKind::Mod, crate_id.as_def_id());
|
Res::Def(DefKind::Mod, crate_id.as_def_id());
|
||||||
|
|
|
@ -1482,15 +1482,15 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
StableHashingContext::new(self.tcx.sess, &self.untracked)
|
StableHashingContext::new(self.tcx.sess, &self.untracked)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn crate_loader(&mut self) -> CrateLoader<'_> {
|
fn crate_loader<T>(&mut self, f: impl FnOnce(&mut CrateLoader<'_>) -> T) -> T {
|
||||||
CrateLoader::new(
|
f(&mut CrateLoader::new(
|
||||||
&self.tcx.sess,
|
&self.tcx.sess,
|
||||||
&*self.metadata_loader,
|
&*self.metadata_loader,
|
||||||
self.local_crate_name,
|
self.local_crate_name,
|
||||||
&mut *self.untracked.cstore.untracked_as_any().downcast_mut().unwrap(),
|
&mut *self.untracked.cstore.untracked_as_any().downcast_mut().unwrap(),
|
||||||
self.untracked.definitions.read(),
|
self.untracked.definitions.read(),
|
||||||
&mut self.used_extern_options,
|
&mut self.used_extern_options,
|
||||||
)
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cstore(&self) -> &CStore {
|
fn cstore(&self) -> &CStore {
|
||||||
|
@ -1539,7 +1539,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
self.tcx.sess.time("resolve_main", || self.resolve_main());
|
self.tcx.sess.time("resolve_main", || self.resolve_main());
|
||||||
self.tcx.sess.time("resolve_check_unused", || self.check_unused(krate));
|
self.tcx.sess.time("resolve_check_unused", || self.check_unused(krate));
|
||||||
self.tcx.sess.time("resolve_report_errors", || self.report_errors(krate));
|
self.tcx.sess.time("resolve_report_errors", || self.report_errors(krate));
|
||||||
self.tcx.sess.time("resolve_postprocess", || self.crate_loader().postprocess(krate));
|
self.tcx
|
||||||
|
.sess
|
||||||
|
.time("resolve_postprocess", || self.crate_loader(|c| c.postprocess(krate)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1879,10 +1881,10 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
} else {
|
} else {
|
||||||
let crate_id = if finalize {
|
let crate_id = if finalize {
|
||||||
let Some(crate_id) =
|
let Some(crate_id) =
|
||||||
self.crate_loader().process_path_extern(ident.name, ident.span) else { return Some(self.dummy_binding); };
|
self.crate_loader(|c| c.process_path_extern(ident.name, ident.span)) else { return Some(self.dummy_binding); };
|
||||||
crate_id
|
crate_id
|
||||||
} else {
|
} else {
|
||||||
self.crate_loader().maybe_process_path_extern(ident.name)?
|
self.crate_loader(|c| c.maybe_process_path_extern(ident.name))?
|
||||||
};
|
};
|
||||||
let crate_root = self.expect_module(crate_id.as_def_id());
|
let crate_root = self.expect_module(crate_id.as_def_id());
|
||||||
let vis = ty::Visibility::<LocalDefId>::Public;
|
let vis = ty::Visibility::<LocalDefId>::Public;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue