about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2019-09-07 10:03:15 -0400
committerMark Rousskov <mark.simulacrum@gmail.com>2019-09-17 09:30:44 -0400
commit0b586b436d6ea2dddc213c18bf17f2314441c32f (patch)
treec3d0d1bc1363af060db603c0c0199b050474ad74
parentcdd805506e7a01d60906f8b153afb697d687609d (diff)
downloadrust-0b586b436d6ea2dddc213c18bf17f2314441c32f.tar.gz
rust-0b586b436d6ea2dddc213c18bf17f2314441c32f.zip
Take Diagnostic in Handler::emit_diagnostic
-rw-r--r--src/librustc/session/config.rs2
-rw-r--r--src/librustc_errors/diagnostic_builder.rs10
-rw-r--r--src/librustc_errors/lib.rs14
3 files changed, 10 insertions, 16 deletions
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 723855c7c29..5eda3df3781 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -1855,7 +1855,7 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
 struct NullEmitter;
 
 impl errors::emitter::Emitter for NullEmitter {
-    fn emit_diagnostic(&mut self, _: &errors::DiagnosticBuilder<'_>) {}
+    fn emit_diagnostic(&mut self, _: &errors::Diagnostic) {}
 }
 
 // Converts strings provided as `--cfg [cfgspec]` into a `crate_cfg`.
diff --git a/src/librustc_errors/diagnostic_builder.rs b/src/librustc_errors/diagnostic_builder.rs
index 7b8902f125a..25ffb146da7 100644
--- a/src/librustc_errors/diagnostic_builder.rs
+++ b/src/librustc_errors/diagnostic_builder.rs
@@ -99,17 +99,9 @@ impl<'a> DerefMut for DiagnosticBuilder<'a> {
 }
 
 impl<'a> DiagnosticBuilder<'a> {
-    pub fn handler(&self) -> &'a Handler{
-        self.0.handler
-    }
-
     /// Emit the diagnostic.
     pub fn emit(&mut self) {
-        if self.cancelled() {
-            return;
-        }
-
-        self.0.handler.emit_db(&self);
+        self.0.handler.emit_diagnostic(&self);
         self.cancel();
     }
 
diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs
index 4ff18578bca..11e2265cf36 100644
--- a/src/librustc_errors/lib.rs
+++ b/src/librustc_errors/lib.rs
@@ -589,7 +589,7 @@ impl Handler {
     }
     fn delay_as_bug(&self, diagnostic: Diagnostic) {
         if self.flags.report_delayed_bugs {
-            DiagnosticBuilder::new_diagnostic(self, diagnostic.clone()).emit();
+            self.emit_diagnostic(&diagnostic);
         }
         self.delayed_span_bugs.borrow_mut().push(diagnostic);
     }
@@ -747,8 +747,10 @@ impl Handler {
         db.cancel();
     }
 
-    fn emit_db(&self, db: &DiagnosticBuilder<'_>) {
-        let diagnostic = &**db;
+    fn emit_diagnostic(&self, diagnostic: &Diagnostic) {
+        if diagnostic.cancelled() {
+            return;
+        }
 
         TRACK_DIAGNOSTICS.with(|track_diagnostics| {
             track_diagnostics.get()(diagnostic);
@@ -768,12 +770,12 @@ impl Handler {
         // Only emit the diagnostic if we haven't already emitted an equivalent
         // one:
         if self.emitted_diagnostics.borrow_mut().insert(diagnostic_hash) {
-            self.emitter.borrow_mut().emit_diagnostic(db);
-            if db.is_error() {
+            self.emitter.borrow_mut().emit_diagnostic(diagnostic);
+            if diagnostic.is_error() {
                 self.deduplicated_err_count.fetch_add(1, SeqCst);
             }
         }
-        if db.is_error() {
+        if diagnostic.is_error() {
             self.bump_err_count();
         }
     }