Skip to content

Commit

Permalink
Rollup merge of rust-lang#64978 - AnthonyMikh:librustc_errors/lib__fu…
Browse files Browse the repository at this point in the history
…lly_clear_inner_handler, r=Mark-Simulacrum

Fully clear `HandlerInner` in `Handler::reset_err_count`

Address [`FIXME`](https://github.com/rust-lang/rust/blob/702b45e409495a41afcccbe87a251a692b0cefab/src/librustc_errors/lib.rs#L472) for `Handler::reset_err_count` in the way suggested by @Mark-Simulacrum, i. e. clear all the fields of `HandlerInner`.

cc @estebank
  • Loading branch information
tmandry committed Oct 2, 2019
2 parents 643ae95 + bd7cd80 commit 4e2bfe2
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/librustc_errors/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,14 +469,17 @@ impl Handler {
/// 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.
// FIXME: this does not clear inner entirely
pub fn reset_err_count(&self) {
let mut inner = self.inner.borrow_mut();
// actually frees the underlying memory (which `clear` would not do)
inner.emitted_diagnostics = Default::default();
inner.deduplicated_err_count = 0;
inner.err_count = 0;
inner.stashed_diagnostics.clear();
inner.deduplicated_err_count = 0;

// actually free the underlying memory (which `clear` would not do)
inner.delayed_span_bugs = Default::default();
inner.taught_diagnostics = Default::default();
inner.emitted_diagnostic_codes = Default::default();
inner.emitted_diagnostics = Default::default();
inner.stashed_diagnostics = Default::default();
}

/// Stash a given diagnostic with the given `Span` and `StashKey` as the key for later stealing.
Expand Down

0 comments on commit 4e2bfe2

Please sign in to comment.