diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2016-05-02 11:44:25 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2016-05-02 11:49:26 -0400 |
| commit | db8a9a92b3dafcd5a8d7207096c8cbb90db0b013 (patch) | |
| tree | de6b7c1bf64dabcb0e74335167e8953647b482b2 /src/libsyntax/errors | |
| parent | 9d151a71c032b655ca457521730044237c9e130e (diff) | |
| download | rust-db8a9a92b3dafcd5a8d7207096c8cbb90db0b013.tar.gz rust-db8a9a92b3dafcd5a8d7207096c8cbb90db0b013.zip | |
avoid double panic
Diffstat (limited to 'src/libsyntax/errors')
| -rw-r--r-- | src/libsyntax/errors/mod.rs | 3 |
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, |
