diff options
| author | Ben Kimock <kimockb@gmail.com> | 2023-10-27 21:26:43 -0400 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2023-11-22 22:49:22 -0500 |
| commit | fbaa24ee35dffb044e4895ad68f01c3f06046275 (patch) | |
| tree | 8e56d12161916599c3df82921c0fee356c12cac0 /compiler/rustc_interface/src/queries.rs | |
| parent | c387f012b14a3d64e0d580b7ebe65e5325bcf822 (diff) | |
| download | rust-fbaa24ee35dffb044e4895ad68f01c3f06046275.tar.gz rust-fbaa24ee35dffb044e4895ad68f01c3f06046275.zip | |
Call FileEncoder::finish in rmeta encoding
Diffstat (limited to 'compiler/rustc_interface/src/queries.rs')
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 1c65cf19cde..bee27dc2d69 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -1,6 +1,6 @@ use crate::errors::{FailedWritingFile, RustcErrorFatal, RustcErrorUnexpectedAnnotation}; use crate::interface::{Compiler, Result}; -use crate::{passes, util}; +use crate::{errors, passes, util}; use rustc_ast as ast; use rustc_codegen_ssa::traits::CodegenBackend; @@ -15,6 +15,7 @@ use rustc_metadata::creader::CStore; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::DepGraph; use rustc_middle::ty::{GlobalCtxt, TyCtxt}; +use rustc_serialize::opaque::FileEncodeResult; use rustc_session::config::{self, CrateType, OutputFilenames, OutputType}; use rustc_session::cstore::Untracked; use rustc_session::output::find_crate_name; @@ -102,6 +103,10 @@ impl<'tcx> Queries<'tcx> { } } + pub fn finish(&self) -> FileEncodeResult { + if let Some(gcx) = self.gcx_cell.get() { gcx.finish() } else { Ok(0) } + } + pub fn parse(&self) -> Result<QueryResult<'_, ast::Crate>> { self.parse.compute(|| { passes::parse(&self.compiler.sess).map_err(|mut parse_error| parse_error.emit()) @@ -317,6 +322,9 @@ impl Compiler { // The timer's lifetime spans the dropping of `queries`, which contains // the global context. _timer = Some(self.sess.timer("free_global_ctxt")); + if let Err((path, error)) = queries.finish() { + self.sess.emit_err(errors::FailedWritingFile { path: &path, error }); + } ret } |
