Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only bump error count when we are sure that the diagnostic is not a repetition #47146

Merged
merged 1 commit into from Jan 3, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/librustc_errors/diagnostic.rs
Expand Up @@ -100,9 +100,6 @@ impl Diagnostic {

/// Cancel the diagnostic (a structured diagnostic must either be emitted or
/// canceled or it will panic when dropped).
/// BEWARE: if this DiagnosticBuilder is an error, then creating it will
/// bump the error count on the Handler and canceling it won't undo that.
/// If you want to decrement the error count you should use `Handler::cancel`.
pub fn cancel(&mut self) {
self.level = Level::Cancelled;
}
Expand Down
18 changes: 6 additions & 12 deletions src/librustc_errors/diagnostic_builder.rs
Expand Up @@ -83,7 +83,12 @@ impl<'a> DiagnosticBuilder<'a> {
return;
}

let is_error = match self.level {
self.handler.emit_db(&self);
self.cancel();
}

pub fn is_error(&self) -> bool {
match self.level {
Level::Bug |
Level::Fatal |
Level::PhaseFatal |
Expand All @@ -97,18 +102,7 @@ impl<'a> DiagnosticBuilder<'a> {
Level::Cancelled => {
false
}
};

self.handler.emit_db(&self);
self.cancel();

if is_error {
self.handler.bump_err_count();
}

// if self.is_fatal() {
// panic!(FatalError);
// }
}

/// Convenience function for internal use, clients should use one of the
Expand Down
3 changes: 3 additions & 0 deletions src/librustc_errors/lib.rs
Expand Up @@ -588,6 +588,9 @@ impl Handler {
// one:
if self.emitted_diagnostics.borrow_mut().insert(diagnostic_hash) {
self.emitter.borrow_mut().emit(db);
if db.is_error() {
self.bump_err_count();
}
}
}
}
Expand Down
Expand Up @@ -42,5 +42,5 @@ error: stability attributes may not be used outside of the standard library
35 | #[rustc_deprecated = "1500"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 9 previous errors
error: aborting due to 8 previous errors

Expand Up @@ -42,5 +42,5 @@ error: stability attributes may not be used outside of the standard library
35 | #[stable = "1300"] impl S { }
| ^^^^^^^^^^^^^^^^^^

error: aborting due to 9 previous errors
error: aborting due to 8 previous errors

Expand Up @@ -42,5 +42,5 @@ error: stability attributes may not be used outside of the standard library
35 | #[unstable = "1200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^

error: aborting due to 9 previous errors
error: aborting due to 8 previous errors

2 changes: 1 addition & 1 deletion src/test/ui/issue-42106.stderr
Expand Up @@ -8,5 +8,5 @@ error[E0502]: cannot borrow `*collection` as mutable because `collection` is als
14 | }
| - immutable borrow ends here

error: aborting due to 2 previous errors
error: aborting due to previous error

2 changes: 1 addition & 1 deletion src/test/ui/span/macro-ty-params.stderr
Expand Up @@ -22,5 +22,5 @@ error: generic arguments in macro path
20 | m!(MyTrait<>); //~ ERROR generic arguments in macro path
| ^^

error: aborting due to 5 previous errors
error: aborting due to 4 previous errors