Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--Cargo.lock70
-rw-r--r--crates/rust-analyzer/Cargo.toml2
-rw-r--r--crates/rust-analyzer/src/handlers/dispatch.rs3
-rw-r--r--crates/rust-analyzer/src/main_loop.rs6
-rw-r--r--lib/lsp-server/src/stdio.rs15
5 files changed, 34 insertions, 62 deletions
diff --git a/Cargo.lock b/Cargo.lock
index a02a623756..e19ac93f0c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -145,9 +145,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.4"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "borsh"
@@ -771,7 +771,7 @@ dependencies = [
name = "helix-lsp-types"
version = "0.95.1"
dependencies = [
- "bitflags 2.9.1",
+ "bitflags 2.10.0",
"serde",
"serde_json",
"url",
@@ -820,7 +820,7 @@ version = "0.0.0"
dependencies = [
"arrayvec",
"base-db",
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"cfg",
"cov-mark",
"drop_bomb",
@@ -1102,7 +1102,7 @@ version = "0.0.0"
dependencies = [
"arrayvec",
"base-db",
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"cov-mark",
"crossbeam-channel",
"either",
@@ -1207,7 +1207,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"inotify-sys",
"libc",
]
@@ -1358,7 +1358,7 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"libc",
]
@@ -1445,19 +1445,6 @@ dependencies = [
]
[[package]]
-name = "lsp-server"
-version = "0.7.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d6ada348dbc2703cbe7637b2dda05cff84d3da2819c24abcb305dd613e0ba2e"
-dependencies = [
- "crossbeam-channel",
- "log",
- "serde",
- "serde_derive",
- "serde_json",
-]
-
-[[package]]
name = "lsp-types"
version = "0.95.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1485,7 +1472,7 @@ name = "mbe"
version = "0.0.0"
dependencies = [
"arrayvec",
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"cov-mark",
"expect-test",
"intern",
@@ -1577,7 +1564,7 @@ version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"cfg-if",
"cfg_aliases",
"libc",
@@ -1595,7 +1582,7 @@ version = "8.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"fsevent-sys",
"inotify",
"kqueue",
@@ -1974,7 +1961,7 @@ checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"
dependencies = [
"bit-set",
"bit-vec",
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"num-traits",
"rand",
"rand_chacha",
@@ -2011,7 +1998,7 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"memchr",
"unicase",
]
@@ -2064,7 +2051,7 @@ version = "0.143.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d49dbe5d570793b3c3227972a6ac85fc3e830f09b32c3cb3b68cfceebad3b0a"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"ra-ap-rustc_hashes",
"ra-ap-rustc_index",
"tracing",
@@ -2159,7 +2146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a86e33c46b2b261a173b23f207461a514812a8b2d2d7935bbc685f733eacce10"
dependencies = [
"arrayvec",
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"derive-where",
"ena",
"indexmap",
@@ -2248,7 +2235,7 @@ version = "0.5.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
]
[[package]]
@@ -2327,7 +2314,7 @@ dependencies = [
"indexmap",
"itertools 0.14.0",
"load-cargo",
- "lsp-server 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lsp-server",
"lsp-types",
"memchr",
"mimalloc",
@@ -2412,7 +2399,7 @@ version = "0.2.3+llvm-462a31f5a5ab"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"smallvec",
]
@@ -2431,7 +2418,7 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
- "bitflags 2.9.4",
+ "bitflags 2.10.0",
"errno",
"libc",
"linux-raw-sys",
@@ -2550,27 +2537,6 @@ dependencies = [
]
[[package]]
-name = "serde-untagged"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
-dependencies = [
- "erased-serde",
- "serde",
- "typeid",
-]
-
-[[package]]
-name = "serde-value"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
-dependencies = [
- "ordered-float",
- "serde",
-]
-
-[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml
index d1283ca59e..94c0d32be1 100644
--- a/crates/rust-analyzer/Cargo.toml
+++ b/crates/rust-analyzer/Cargo.toml
@@ -41,8 +41,8 @@ serde_derive.workspace = true
tenthash = "1.1.0"
num_cpus = "1.17.0"
mimalloc = { version = "0.1.46", default-features = false, optional = true }
-lsp-server.workspace = true
smallvec.workspace = true
+lsp-server = { version = "0.7.9", path = "../../lib/lsp-server" }
tracing.workspace = true
tracing-subscriber.workspace = true
tracing-tree.workspace = true
diff --git a/crates/rust-analyzer/src/handlers/dispatch.rs b/crates/rust-analyzer/src/handlers/dispatch.rs
index 67bd643fce..f3b24bf0e7 100644
--- a/crates/rust-analyzer/src/handlers/dispatch.rs
+++ b/crates/rust-analyzer/src/handlers/dispatch.rs
@@ -421,6 +421,9 @@ impl NotificationDispatcher<'_> {
self.not = Some(not);
return self;
}
+ Err(ExtractError::NoResult) => {
+ panic!()
+ }
};
tracing::debug!(?params);
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index 10f45ddb25..24298dff45 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -272,8 +272,10 @@ impl GlobalState {
}
select! {
- recv(inbox) -> msg =>
- return Ok(msg.ok().map(Event::Lsp)),
+ recv(inbox) -> msg => {
+ tracing::debug!("{msg:?}");
+ return Ok(msg.ok().map(Event::Lsp))
+ },
recv(self.task_pool.receiver) -> task =>
task.map(Event::Task),
diff --git a/lib/lsp-server/src/stdio.rs b/lib/lsp-server/src/stdio.rs
index d3789ce5c0..55b2f7b223 100644
--- a/lib/lsp-server/src/stdio.rs
+++ b/lib/lsp-server/src/stdio.rs
@@ -5,7 +5,7 @@ use std::{
use log::debug;
-use crossbeam_channel::{Receiver, Sender, bounded};
+use crossbeam_channel::{Receiver, Sender, bounded, unbounded};
use crate::Message;
/// Creates an LSP connection via stdio.
@@ -13,15 +13,16 @@ pub fn stdio_transport(
mut read_from: impl Read + std::io::BufRead + Sync + Send + 'static,
mut write_to: impl Write + Sync + Send + 'static,
) -> (Sender<Message>, Receiver<Message>, IoThreads) {
- let (writer_sender, writer_receiver) = bounded::<Message>(0);
+ let (writer_sender, writer_receiver) = unbounded::<Message>();
let writer = thread::Builder::new()
.name("LspServerWriter".to_owned())
.spawn(move || {
- writer_receiver.into_iter().try_for_each(|it| {
+ loop {
+ let it = writer_receiver.recv().unwrap();
debug!("sent message {it:#?}");
- let result = it.write(&mut write_to);
+ let result = it.write(&mut write_to).unwrap();
result
- })
+ }
})
.unwrap();
let (reader_sender, reader_receiver) = bounded::<Message>(0);
@@ -55,8 +56,8 @@ pub(crate) fn make_io_threads(
}
pub struct IoThreads {
- reader: thread::JoinHandle<io::Result<()>>,
- writer: thread::JoinHandle<io::Result<()>>,
+ pub reader: thread::JoinHandle<io::Result<()>>,
+ pub writer: thread::JoinHandle<io::Result<()>>,
}
impl IoThreads {