Skip to content

Commit cf1f92a

Browse files
committed
Revert "Let several methods take &Resolver instead of a BoxedResolver wrapper"
This reverts commit 5343ec338f72a61e2f51f9d90117092c8e8a725a.
1 parent 5e14820 commit cf1f92a

File tree

2 files changed

+25
-29
lines changed

2 files changed

+25
-29
lines changed

compiler/rustc_interface/src/passes.rs

+18-15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use rustc_ast::{self as ast, visit};
77
use rustc_codegen_ssa::back::link::emit_metadata;
88
use rustc_codegen_ssa::traits::CodegenBackend;
99
use rustc_data_structures::parallel;
10+
use rustc_data_structures::steal::Steal;
1011
use rustc_data_structures::sync::{par_iter, Lrc, OnceCell, ParallelIterator, WorkerLocal};
1112
use rustc_data_structures::temp_dir::MaybeTempDir;
1213
use rustc_errors::{ErrorReported, PResult};
@@ -270,7 +271,7 @@ fn pre_expansion_lint(
270271

271272
fn configure_and_expand_inner<'a>(
272273
sess: &'a Session,
273-
lint_store: &LintStore,
274+
lint_store: &'a LintStore,
274275
mut krate: ast::Crate,
275276
crate_name: &str,
276277
resolver_arenas: &'a ResolverArenas<'a>,
@@ -593,7 +594,7 @@ fn escape_dep_env(symbol: Symbol) -> String {
593594

594595
fn write_out_deps(
595596
sess: &Session,
596-
resolver: &Resolver<'_>,
597+
boxed_resolver: &Steal<Rc<RefCell<BoxedResolver>>>,
597598
outputs: &OutputFilenames,
598599
out_filenames: &[PathBuf],
599600
) {
@@ -620,18 +621,20 @@ fn write_out_deps(
620621
}
621622

622623
if sess.binary_dep_depinfo() {
623-
for cnum in resolver.cstore().crates_untracked() {
624-
let source = resolver.cstore().crate_source_untracked(cnum);
625-
if let Some((path, _)) = source.dylib {
626-
files.push(escape_dep_filename(&path.display().to_string()));
627-
}
628-
if let Some((path, _)) = source.rlib {
629-
files.push(escape_dep_filename(&path.display().to_string()));
630-
}
631-
if let Some((path, _)) = source.rmeta {
632-
files.push(escape_dep_filename(&path.display().to_string()));
624+
boxed_resolver.borrow().borrow_mut().access(|resolver| {
625+
for cnum in resolver.cstore().crates_untracked() {
626+
let source = resolver.cstore().crate_source_untracked(cnum);
627+
if let Some((path, _)) = source.dylib {
628+
files.push(escape_dep_filename(&path.display().to_string()));
629+
}
630+
if let Some((path, _)) = source.rlib {
631+
files.push(escape_dep_filename(&path.display().to_string()));
632+
}
633+
if let Some((path, _)) = source.rmeta {
634+
files.push(escape_dep_filename(&path.display().to_string()));
635+
}
633636
}
634-
}
637+
});
635638
}
636639

637640
let mut file = BufWriter::new(fs::File::create(&deps_filename)?);
@@ -687,7 +690,7 @@ pub fn prepare_outputs(
687690
sess: &Session,
688691
compiler: &Compiler,
689692
krate: &ast::Crate,
690-
resolver: &Resolver<'_>,
693+
boxed_resolver: &Steal<Rc<RefCell<BoxedResolver>>>,
691694
crate_name: &str,
692695
) -> Result<OutputFilenames> {
693696
let _timer = sess.timer("prepare_outputs");
@@ -727,7 +730,7 @@ pub fn prepare_outputs(
727730
}
728731
}
729732

730-
write_out_deps(sess, resolver, &outputs, &output_paths);
733+
write_out_deps(sess, boxed_resolver, &outputs, &output_paths);
731734

732735
let only_dep_info = sess.opts.output_types.contains_key(&OutputType::DepInfo)
733736
&& sess.opts.output_types.len() == 1;

compiler/rustc_interface/src/queries.rs

+7-14
Original file line numberDiff line numberDiff line change
@@ -246,20 +246,13 @@ impl<'tcx> Queries<'tcx> {
246246
let expansion_result = self.expansion()?;
247247
let (krate, boxed_resolver, _) = &*expansion_result.peek();
248248
let crate_name = self.crate_name()?.peek();
249-
250-
// These borrow(), borrow_mut() and access() calls are separate statements to prevent a
251-
// "temporary value dropped while borrowed" error.
252-
let boxed_resolver = boxed_resolver.borrow();
253-
let mut boxed_resolver = boxed_resolver.borrow_mut();
254-
boxed_resolver.access(|resolver| {
255-
passes::prepare_outputs(
256-
self.session(),
257-
self.compiler,
258-
&krate,
259-
resolver,
260-
&crate_name,
261-
)
262-
})
249+
passes::prepare_outputs(
250+
self.session(),
251+
self.compiler,
252+
&krate,
253+
&boxed_resolver,
254+
&crate_name,
255+
)
263256
})
264257
}
265258

0 commit comments

Comments
 (0)