diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-06-01 11:51:32 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-06-08 19:24:17 +0200 |
| commit | cf1f92a2ca29bd8ae183929fa44447c9d3bd6637 (patch) | |
| tree | 4580c70b46dd49895c0f7c77ac031e52ff554c40 /compiler/rustc_interface/src | |
| parent | 5e148200d457ef7f6740990d15b7b9c534e3aaeb (diff) | |
| download | rust-cf1f92a2ca29bd8ae183929fa44447c9d3bd6637.tar.gz rust-cf1f92a2ca29bd8ae183929fa44447c9d3bd6637.zip | |
Revert "Let several methods take &Resolver instead of a BoxedResolver wrapper"
This reverts commit 5343ec338f72a61e2f51f9d90117092c8e8a725a.
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 33 | ||||
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 21 |
2 files changed, 25 insertions, 29 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index a6115762a82..802d00faef9 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -7,6 +7,7 @@ use rustc_ast::{self as ast, visit}; use rustc_codegen_ssa::back::link::emit_metadata; use rustc_codegen_ssa::traits::CodegenBackend; use rustc_data_structures::parallel; +use rustc_data_structures::steal::Steal; use rustc_data_structures::sync::{par_iter, Lrc, OnceCell, ParallelIterator, WorkerLocal}; use rustc_data_structures::temp_dir::MaybeTempDir; use rustc_errors::{ErrorReported, PResult}; @@ -270,7 +271,7 @@ fn pre_expansion_lint( fn configure_and_expand_inner<'a>( sess: &'a Session, - lint_store: &LintStore, + lint_store: &'a LintStore, mut krate: ast::Crate, crate_name: &str, resolver_arenas: &'a ResolverArenas<'a>, @@ -593,7 +594,7 @@ fn escape_dep_env(symbol: Symbol) -> String { fn write_out_deps( sess: &Session, - resolver: &Resolver<'_>, + boxed_resolver: &Steal<Rc<RefCell<BoxedResolver>>>, outputs: &OutputFilenames, out_filenames: &[PathBuf], ) { @@ -620,18 +621,20 @@ fn write_out_deps( } if sess.binary_dep_depinfo() { - for cnum in resolver.cstore().crates_untracked() { - let source = resolver.cstore().crate_source_untracked(cnum); - if let Some((path, _)) = source.dylib { - files.push(escape_dep_filename(&path.display().to_string())); - } - if let Some((path, _)) = source.rlib { - files.push(escape_dep_filename(&path.display().to_string())); - } - if let Some((path, _)) = source.rmeta { - files.push(escape_dep_filename(&path.display().to_string())); + boxed_resolver.borrow().borrow_mut().access(|resolver| { + for cnum in resolver.cstore().crates_untracked() { + let source = resolver.cstore().crate_source_untracked(cnum); + if let Some((path, _)) = source.dylib { + files.push(escape_dep_filename(&path.display().to_string())); + } + if let Some((path, _)) = source.rlib { + files.push(escape_dep_filename(&path.display().to_string())); + } + if let Some((path, _)) = source.rmeta { + files.push(escape_dep_filename(&path.display().to_string())); + } } - } + }); } let mut file = BufWriter::new(fs::File::create(&deps_filename)?); @@ -687,7 +690,7 @@ pub fn prepare_outputs( sess: &Session, compiler: &Compiler, krate: &ast::Crate, - resolver: &Resolver<'_>, + boxed_resolver: &Steal<Rc<RefCell<BoxedResolver>>>, crate_name: &str, ) -> Result<OutputFilenames> { let _timer = sess.timer("prepare_outputs"); @@ -727,7 +730,7 @@ pub fn prepare_outputs( } } - write_out_deps(sess, resolver, &outputs, &output_paths); + write_out_deps(sess, boxed_resolver, &outputs, &output_paths); let only_dep_info = sess.opts.output_types.contains_key(&OutputType::DepInfo) && sess.opts.output_types.len() == 1; diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index cc9c30986e9..2320f0b47d2 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -246,20 +246,13 @@ impl<'tcx> Queries<'tcx> { let expansion_result = self.expansion()?; let (krate, boxed_resolver, _) = &*expansion_result.peek(); let crate_name = self.crate_name()?.peek(); - - // These borrow(), borrow_mut() and access() calls are separate statements to prevent a - // "temporary value dropped while borrowed" error. - let boxed_resolver = boxed_resolver.borrow(); - let mut boxed_resolver = boxed_resolver.borrow_mut(); - boxed_resolver.access(|resolver| { - passes::prepare_outputs( - self.session(), - self.compiler, - &krate, - resolver, - &crate_name, - ) - }) + passes::prepare_outputs( + self.session(), + self.compiler, + &krate, + &boxed_resolver, + &crate_name, + ) }) } |
