From 10d5d78dedce7526739c8d7c488b820bef33c7c6 Mon Sep 17 00:00:00 2001 From: liuyanghejerry Date: Tue, 11 Nov 2025 21:45:03 +0800 Subject: [PATCH] Improve error messages on extension loading (#42266) This pull request improves error message when extension loading goes wrong. Before: ``` 2025-11-08T21:16:02+08:00 ERROR [extension_host::extension_host] failed to load arkts extension.toml Caused by: No such file or directory (os error 2) ``` Now: ``` 2025-11-08T22:57:00+08:00 ERROR [extension_host::extension_host] failed to load arkts extension.toml, "/Users/user_name_placeholder/Library/Application Support/Zed/extensions/installed/arkts/extension.toml" Caused by: No such file or directory (os error 2) ``` Release Notes: - N/A --- crates/extension/src/extension_manifest.rs | 14 ++++++-------- crates/extension_host/src/wasm_host.rs | 6 +++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/crates/extension/src/extension_manifest.rs b/crates/extension/src/extension_manifest.rs index 7e074ffcab77ceb2a63fd92448faa2e13f4ec8c4..7a15a3c58b7a907fa56a12633343a48d150b6bcf 100644 --- a/crates/extension/src/extension_manifest.rs +++ b/crates/extension/src/extension_manifest.rs @@ -267,10 +267,9 @@ impl ExtensionManifest { let mut extension_manifest_path = extension_dir.join("extension.json"); if fs.is_file(&extension_manifest_path).await { - let manifest_content = fs - .load(&extension_manifest_path) - .await - .with_context(|| format!("failed to load {extension_name} extension.json"))?; + let manifest_content = fs.load(&extension_manifest_path).await.with_context(|| { + format!("loading {extension_name} extension.json, {extension_manifest_path:?}") + })?; let manifest_json = serde_json::from_str::(&manifest_content) .with_context(|| { format!("invalid extension.json for extension {extension_name}") @@ -279,10 +278,9 @@ impl ExtensionManifest { Ok(manifest_from_old_manifest(manifest_json, extension_name)) } else { extension_manifest_path.set_extension("toml"); - let manifest_content = fs - .load(&extension_manifest_path) - .await - .with_context(|| format!("failed to load {extension_name} extension.toml"))?; + let manifest_content = fs.load(&extension_manifest_path).await.with_context(|| { + format!("loading {extension_name} extension.toml, {extension_manifest_path:?}") + })?; toml::from_str(&manifest_content).map_err(|err| { anyhow!("Invalid extension.toml for extension {extension_name}:\n{err}") }) diff --git a/crates/extension_host/src/wasm_host.rs b/crates/extension_host/src/wasm_host.rs index eb26c44f20519b7cdb3a38859f23ce99365fe505..1e4bed7a50b44c710384f19c901e4e74854df0e2 100644 --- a/crates/extension_host/src/wasm_host.rs +++ b/crates/extension_host/src/wasm_host.rs @@ -763,17 +763,17 @@ impl WasmExtension { .fs .open_sync(&path) .await - .context("failed to open wasm file")?; + .context(format!("opening wasm file, path: {path:?}"))?; let mut wasm_bytes = Vec::new(); wasm_file .read_to_end(&mut wasm_bytes) - .context("failed to read wasm")?; + .context(format!("reading wasm file, path: {path:?}"))?; wasm_host .load_extension(wasm_bytes, manifest, cx) .await - .with_context(|| format!("failed to load wasm extension {}", manifest.id)) + .with_context(|| format!("loading wasm extension: {}", manifest.id)) } pub async fn call(&self, f: Fn) -> Result