about summary refs log tree commit diff
path: root/src/libsyntax/errors
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2016-05-02 11:44:25 -0400
committerNiko Matsakis <niko@alum.mit.edu>2016-05-02 11:49:26 -0400
commitdb8a9a92b3dafcd5a8d7207096c8cbb90db0b013 (patch)
treede6b7c1bf64dabcb0e74335167e8953647b482b2 /src/libsyntax/errors
parent9d151a71c032b655ca457521730044237c9e130e (diff)
downloadrust-db8a9a92b3dafcd5a8d7207096c8cbb90db0b013.tar.gz
rust-db8a9a92b3dafcd5a8d7207096c8cbb90db0b013.zip
avoid double panic
Diffstat (limited to 'src/libsyntax/errors')
-rw-r--r--src/libsyntax/errors/mod.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libsyntax/errors/mod.rs b/src/libsyntax/errors/mod.rs
index 4ade537c8ce..f0c665bcb3c 100644
--- a/src/libsyntax/errors/mod.rs
+++ b/src/libsyntax/errors/mod.rs
@@ -20,6 +20,7 @@ use errors::emitter::{Emitter, EmitterWriter};
 use std::cell::{RefCell, Cell};
 use std::{error, fmt};
 use std::rc::Rc;
+use std::thread::panicking;
 use term;
 
 pub mod emitter;
@@ -352,7 +353,7 @@ impl<'a> fmt::Debug for DiagnosticBuilder<'a> {
 /// we emit a bug.
 impl<'a> Drop for DiagnosticBuilder<'a> {
     fn drop(&mut self) {
-        if !self.cancelled() {
+        if !panicking() && !self.cancelled() {
             self.emitter.borrow_mut().emit(&MultiSpan::new(),
                                            "Error constructed but not emitted",
                                            None,