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

Piotr Osiewicz created

Release Notes:
- Fixed a crash on failed assertion in Vue.js language support.

Change summary

crates/zed/src/languages/vue.rs | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

Detailed changes

crates/zed/src/languages/vue.rs 🔗

@@ -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?,