diff options
| author | Michael Woerister <michaelwoerister@posteo.net> | 2017-07-24 16:18:11 +0200 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo.net> | 2017-07-31 15:15:09 +0200 |
| commit | 4282dd87ea79ea7836978e0b45514aea35dc1d0d (patch) | |
| tree | fc7ac04ff68edf824c59aec8088c95b79d2b3199 | |
| parent | 8f6894e177cecf3cd35833e2063256a69841415a (diff) | |
| download | rust-4282dd87ea79ea7836978e0b45514aea35dc1d0d.tar.gz rust-4282dd87ea79ea7836978e0b45514aea35dc1d0d.zip | |
async-llvm(7): Clean up error handling a bit.
| -rw-r--r-- | src/librustc_trans/back/write.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/librustc_trans/back/write.rs b/src/librustc_trans/back/write.rs index ee3c9ace7dc..5d9444218c4 100644 --- a/src/librustc_trans/back/write.rs +++ b/src/librustc_trans/back/write.rs @@ -1248,7 +1248,13 @@ fn start_executing_work(sess: &Session, // this to spawn a new unit of work, or it may get dropped // immediately if we have no more work to spawn. Message::Token(token) => { - tokens.push(token.expect("failed to acquire jobserver token")); + if let Ok(token) = token { + tokens.push(token); + } else { + shared_emitter.fatal("failed to acquire jobserver token"); + drop(trans_worker_send.send(Message::CheckErrorMessages)); + return + } } Message::WorkItem(work_item) => { @@ -1266,11 +1272,12 @@ fn start_executing_work(sess: &Session, Message::Done { success: true } => { drop(tokens.pop()); running -= 1; - trans_worker_send.send(Message::CheckErrorMessages).unwrap(); + drop(trans_worker_send.send(Message::CheckErrorMessages)); } Message::Done { success: false } => { - shared_emitter.fatal("aborting due to worker thread panic".to_string()); - trans_worker_send.send(Message::CheckErrorMessages).unwrap(); + shared_emitter.fatal("aborting due to worker thread panic"); + drop(trans_worker_send.send(Message::CheckErrorMessages)); + return } msg @ Message::CheckErrorMessages => { bug!("unexpected message: {:?}", msg); @@ -1440,8 +1447,8 @@ impl SharedEmitter { drop(self.sender.send(SharedEmitterMessage::InlineAsmError(cookie, msg))); } - fn fatal(&self, msg: String) { - drop(self.sender.send(SharedEmitterMessage::Fatal(msg))); + fn fatal(&self, msg: &str) { + drop(self.sender.send(SharedEmitterMessage::Fatal(msg.to_string()))); } } |
