Skip to content

Commit 71a43af

Browse files
committed
fix: Don't panic lsp writer thread on dropped receiver
1 parent f19a9fe commit 71a43af

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/lsp-server/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lsp-server"
3-
version = "0.7.6"
3+
version = "0.7.7"
44
description = "Generic LSP server scaffold."
55
license = "MIT OR Apache-2.0"
66
repository = "https://github.com/rust-lang/rust-analyzer/tree/master/lib/lsp-server"

lib/lsp-server/src/stdio.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ pub(crate) fn stdio_transport() -> (Sender<Message>, Receiver<Message>, IoThread
3030
let is_exit = matches!(&msg, Message::Notification(n) if n.is_exit());
3131

3232
debug!("sending message {:#?}", msg);
33-
reader_sender.send(msg).expect("receiver was dropped, failed to send a message");
33+
if let Err(e) = reader_sender.send(msg) {
34+
return Err(io::Error::new(io::ErrorKind::Other, e));
35+
}
3436

3537
if is_exit {
3638
break;
@@ -60,15 +62,11 @@ impl IoThreads {
6062
pub fn join(self) -> io::Result<()> {
6163
match self.reader.join() {
6264
Ok(r) => r?,
63-
Err(err) => {
64-
println!("reader panicked!");
65-
std::panic::panic_any(err)
66-
}
65+
Err(err) => std::panic::panic_any(err),
6766
}
6867
match self.writer.join() {
6968
Ok(r) => r,
7069
Err(err) => {
71-
println!("writer panicked!");
7270
std::panic::panic_any(err);
7371
}
7472
}

0 commit comments

Comments
 (0)