Fix overflow in rustc happening if the err_count() is reduced in a stage.

This can happen if stashed diagnostics are removed or replaced with fewer errors. The semantics stay the same if built without overflow. Fixes #84219.
This commit is contained in:
Hans Kratz 2021-08-04 14:25:45 +00:00
parent 49ca3d9796
commit 5ff06fb77f

View File

@ -450,8 +450,7 @@ impl Session {
{
let old_count = self.err_count();
let result = f();
let errors = self.err_count() - old_count;
if errors == 0 { Ok(result) } else { Err(ErrorReported) }
if self.err_count() == old_count { Ok(result) } else { Err(ErrorReported) }
}
pub fn span_warn<S: Into<MultiSpan>>(&self, sp: S, msg: &str) {
self.diagnostic().span_warn(sp, msg)