about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo.net>2017-07-24 16:18:11 +0200
committerMichael Woerister <michaelwoerister@posteo.net>2017-07-31 15:15:09 +0200
commit4282dd87ea79ea7836978e0b45514aea35dc1d0d (patch)
treefc7ac04ff68edf824c59aec8088c95b79d2b3199
parent8f6894e177cecf3cd35833e2063256a69841415a (diff)
downloadrust-4282dd87ea79ea7836978e0b45514aea35dc1d0d.tar.gz
rust-4282dd87ea79ea7836978e0b45514aea35dc1d0d.zip
async-llvm(7): Clean up error handling a bit.
-rw-r--r--src/librustc_trans/back/write.rs19
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())));
     }
 }