vue: use anyhow::ensure instead of asserting on filesystem state (#3173)

Release Notes:
- Fixed a crash on failed assertion in Vue.js language support.
This commit is contained in:
Piotr Osiewicz 2023-10-26 10:16:21 +02:00 committed by GitHub
parent e6f2288a0c
commit 1ec6638c7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
use anyhow::{anyhow, Result};
use anyhow::{anyhow, ensure, Result};
use async_trait::async_trait;
use futures::StreamExt;
pub use language::*;
@ -98,7 +98,10 @@ impl super::LspAdapter for VueLspAdapter {
)
.await?;
}
assert!(fs::metadata(&server_path).await.is_ok());
ensure!(
fs::metadata(&server_path).await.is_ok(),
"@vue/language-server package installation failed"
);
if fs::metadata(&ts_path).await.is_err() {
self.node
.npm_install_packages(
@ -108,7 +111,10 @@ impl super::LspAdapter for VueLspAdapter {
.await?;
}
assert!(fs::metadata(&ts_path).await.is_ok());
ensure!(
fs::metadata(&ts_path).await.is_ok(),
"typescript for Vue package installation failed"
);
*self.typescript_install_path.lock() = Some(ts_path);
Ok(LanguageServerBinary {
path: self.node.binary_path().await?,