diff options
| author | bors <bors@rust-lang.org> | 2018-01-09 07:12:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-01-09 07:12:08 +0000 |
| commit | 2e33c89ff1518359c4bd5fbed1571ea00cb3b146 (patch) | |
| tree | ffb5f5e710ad1a80d0ccf9a4066e092343ab7b1d | |
| parent | 74966b5cb84934737d21bd9001db07bd93fa5d64 (diff) | |
| parent | b48d944165dd878b887273898b7e4e4b4163c786 (diff) | |
| download | rust-2e33c89ff1518359c4bd5fbed1571ea00cb3b146.tar.gz rust-2e33c89ff1518359c4bd5fbed1571ea00cb3b146.zip | |
Auto merge of #47231 - ereslibre:clean-emitted-diagnostics, r=nrc
Clean emitted diagnostics when `reset_err_count` is called. When external tools like `rustfmt` calls to `reset_err_count` for handler reusing, it will set the error count on the handler to 0, but since https://github.com/rust-lang/rust/pull/47146 the handler will contain status that will prevent the error count to be bumped if this handler is reused. This caused `rustfmt` idempotency tests to fail: https://github.com/rust-lang-nursery/rustfmt/issues/2338 Fixes: https://github.com/rust-lang-nursery/rustfmt/issues/2338
| -rw-r--r-- | src/librustc_errors/lib.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs index c4db39fae86..c48f1761f28 100644 --- a/src/librustc_errors/lib.rs +++ b/src/librustc_errors/lib.rs @@ -310,9 +310,13 @@ impl Handler { self.continue_after_error.set(continue_after_error); } - // NOTE: DO NOT call this function from rustc, as it relies on `err_count` being non-zero - // if an error happened to avoid ICEs. This function should only be called from tools. + /// Resets the diagnostic error count as well as the cached emitted diagnostics. + /// + /// NOTE: DO NOT call this function from rustc. It is only meant to be called from external + /// tools that want to reuse a `Parser` cleaning the previously emitted diagnostics as well as + /// the overall count of emitted error diagnostics. pub fn reset_err_count(&self) { + self.emitted_diagnostics.replace(FxHashSet()); self.err_count.store(0, SeqCst); } |
