1
Fork 0

Remove unnecessary after_run function

It's called at the same time and in the same place as `after_krate`, so
they can be combined.
This commit is contained in:
Joshua Nelson 2021-01-19 01:59:45 -05:00
parent 1f0fc02cc8
commit d926147ccb
3 changed files with 30 additions and 23 deletions

View file

@ -38,10 +38,14 @@ crate trait FormatRenderer<'tcx>: Clone {
fn mod_item_out(&mut self, item_name: &str) -> Result<(), Error>; fn mod_item_out(&mut self, item_name: &str) -> Result<(), Error>;
/// Post processing hook for cleanup and dumping output to files. /// Post processing hook for cleanup and dumping output to files.
fn after_krate(&mut self, krate: &clean::Crate, cache: &Cache) -> Result<(), Error>; ///
/// A handler is available if the renderer wants to report errors.
/// Called after everything else to write out errors. fn after_krate(
fn after_run(&mut self, diag: &rustc_errors::Handler) -> Result<(), Error>; &mut self,
krate: &clean::Crate,
cache: &Cache,
diag: &rustc_errors::Handler,
) -> Result<(), Error>;
} }
/// Main method for rendering a crate. /// Main method for rendering a crate.
@ -104,6 +108,5 @@ crate fn run_format<'tcx, T: FormatRenderer<'tcx>>(
} }
} }
format_renderer.after_krate(&krate, &cache)?; format_renderer.after_krate(&krate, &cache, diag)
format_renderer.after_run(diag)
} }

View file

@ -523,17 +523,12 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
Ok((cx, krate)) Ok((cx, krate))
} }
fn after_run(&mut self, diag: &rustc_errors::Handler) -> Result<(), Error> { fn after_krate(
Arc::get_mut(&mut self.shared).unwrap().fs.close(); &mut self,
let nb_errors = self.errors.iter().map(|err| diag.struct_err(&err).emit()).count(); krate: &clean::Crate,
if nb_errors > 0 { cache: &Cache,
Err(Error::new(io::Error::new(io::ErrorKind::Other, "I/O error"), "")) diag: &rustc_errors::Handler,
} else { ) -> Result<(), Error> {
Ok(())
}
}
fn after_krate(&mut self, krate: &clean::Crate, cache: &Cache) -> Result<(), Error> {
let final_file = self.dst.join(&*krate.name.as_str()).join("all.html"); let final_file = self.dst.join(&*krate.name.as_str()).join("all.html");
let settings_file = self.dst.join("settings.html"); let settings_file = self.dst.join("settings.html");
let crate_name = krate.name; let crate_name = krate.name;
@ -596,7 +591,15 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
&style_files, &style_files,
); );
self.shared.fs.write(&settings_file, v.as_bytes())?; self.shared.fs.write(&settings_file, v.as_bytes())?;
Ok(())
// Flush pending errors.
Arc::get_mut(&mut self.shared).unwrap().fs.close();
let nb_errors = self.errors.iter().map(|err| diag.struct_err(&err).emit()).count();
if nb_errors > 0 {
Err(Error::new(io::Error::new(io::ErrorKind::Other, "I/O error"), ""))
} else {
Ok(())
}
} }
fn mod_item_in( fn mod_item_in(

View file

@ -199,7 +199,12 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> {
Ok(()) Ok(())
} }
fn after_krate(&mut self, krate: &clean::Crate, cache: &Cache) -> Result<(), Error> { fn after_krate(
&mut self,
krate: &clean::Crate,
cache: &Cache,
_diag: &rustc_errors::Handler,
) -> Result<(), Error> {
debug!("Done with crate"); debug!("Done with crate");
let mut index = (*self.index).clone().into_inner(); let mut index = (*self.index).clone().into_inner();
index.extend(self.get_trait_items(cache)); index.extend(self.get_trait_items(cache));
@ -245,8 +250,4 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> {
serde_json::ser::to_writer(&file, &output).unwrap(); serde_json::ser::to_writer(&file, &output).unwrap();
Ok(()) Ok(())
} }
fn after_run(&mut self, _diag: &rustc_errors::Handler) -> Result<(), Error> {
Ok(())
}
} }