Simplify future breakage control flow.

`emit_future_breakage` calls
`self.dcx().take_future_breakage_diagnostics()` and then passes the
result to `self.dcx().emit_future_breakage_report(diags)`. This commit
removes the first of these and lets `emit_future_breakage_report` do the
taking.

It also inlines and removes what is left of `emit_future_breakage`,
which has a single call site.
This commit is contained in:
Nicholas Nethercote 2024-02-02 14:30:37 +11:00
parent b506cce579
commit 0621cd46f2
2 changed files with 8 additions and 18 deletions

View File

@ -1038,10 +1038,6 @@ pub fn print_error_count(&self, registry: &Registry) {
} }
} }
pub fn take_future_breakage_diagnostics(&self) -> Vec<Diagnostic> {
std::mem::take(&mut self.inner.borrow_mut().future_breakage_diagnostics)
}
pub fn abort_if_errors(&self) { pub fn abort_if_errors(&self) {
let mut inner = self.inner.borrow_mut(); let mut inner = self.inner.borrow_mut();
inner.emit_stashed_diagnostics(); inner.emit_stashed_diagnostics();
@ -1149,8 +1145,12 @@ pub fn emit_artifact_notification(&self, path: &Path, artifact_type: &str) {
self.inner.borrow_mut().emitter.emit_artifact_notification(path, artifact_type); self.inner.borrow_mut().emitter.emit_artifact_notification(path, artifact_type);
} }
pub fn emit_future_breakage_report(&self, diags: Vec<Diagnostic>) { pub fn emit_future_breakage_report(&self) {
self.inner.borrow_mut().emitter.emit_future_breakage_report(diags) let mut inner = self.inner.borrow_mut();
let diags = std::mem::take(&mut inner.future_breakage_diagnostics);
if !diags.is_empty() {
inner.emitter.emit_future_breakage_report(diags);
}
} }
pub fn emit_unused_externs( pub fn emit_unused_externs(

View File

@ -288,19 +288,9 @@ fn check_miri_unleashed_features(&self) {
pub fn finish_diagnostics(&self, registry: &Registry) { pub fn finish_diagnostics(&self, registry: &Registry) {
self.check_miri_unleashed_features(); self.check_miri_unleashed_features();
self.dcx().print_error_count(registry); self.dcx().print_error_count(registry);
self.emit_future_breakage(); if self.opts.json_future_incompat {
self.dcx().emit_future_breakage_report();
} }
fn emit_future_breakage(&self) {
if !self.opts.json_future_incompat {
return;
}
let diags = self.dcx().take_future_breakage_diagnostics();
if diags.is_empty() {
return;
}
self.dcx().emit_future_breakage_report(diags);
} }
/// Returns true if the crate is a testing one. /// Returns true if the crate is a testing one.