diff options
| author | Wilfred Hughes <me@wilfred.me.uk> | 2025-06-30 14:46:53 +0100 |
|---|---|---|
| committer | Wilfred Hughes <me@wilfred.me.uk> | 2025-07-04 16:55:53 +0100 |
| commit | e779ea0ea7b39c235baac816772829111e61511b (patch) | |
| tree | 2c7ba048d1c6d9cb73975ae2dc4cd28def04f2ea /src/tools/rust-analyzer | |
| parent | 4b506ca0e1821e71fd8a6c7434dc02b5bd432a34 (diff) | |
| download | rust-e779ea0ea7b39c235baac816772829111e61511b.tar.gz rust-e779ea0ea7b39c235baac816772829111e61511b.zip | |
fix: Avoid .unwrap() when running the discover command
Previously, the following configuration in settings.json:
"rust-analyzer.workspace.discoverConfig": {
"command": [
"oops",
"develop-json",
"{arg}"
],
"progressLabel": "rust-analyzer",
"filesToWatch": [
"BUCK",
"TARGETS"
]
},
Would previously cause a crash in rust-analyzer:
thread 'LspServer' panicked at crates/rust-analyzer/src/main_loop.rs:776:84:
called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
Instead, use more specific panic messages.
Diffstat (limited to 'src/tools/rust-analyzer')
| -rw-r--r-- | src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs index 0c0438c4b8f..00cf890510d 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/main_loop.rs @@ -783,9 +783,14 @@ impl GlobalState { DiscoverProjectParam::Path(it) => DiscoverArgument::Path(it), }; - let handle = - discover.spawn(arg, &std::env::current_dir().unwrap()).unwrap(); - self.discover_handle = Some(handle); + let handle = discover.spawn( + arg, + &std::env::current_dir() + .expect("Failed to get cwd during project discovery"), + ); + self.discover_handle = Some(handle.unwrap_or_else(|e| { + panic!("Failed to spawn project discovery command: {e}") + })); } } } |
