From 049f4dbd2b990f46772d07f07d54c7ea6ccca7fd Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 5 Mar 2025 10:40:11 +0100 Subject: [PATCH] Add warning and debug information when `cargo metadata` fails The errors are silently dropped elsewhere, which make it really hard to debug issues due to dependency download failures. --- .../crates/project-model/src/cargo_workspace.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs index 40ab8c53faeb..e7c3bcb5418d 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/cargo_workspace.rs @@ -288,7 +288,22 @@ impl CargoWorkspace { locked: bool, progress: &dyn Fn(String), ) -> anyhow::Result<(cargo_metadata::Metadata, Option)> { - Self::fetch_metadata_(cargo_toml, current_dir, config, sysroot, locked, false, progress) + let res = Self::fetch_metadata_( + cargo_toml, + current_dir, + config, + sysroot, + locked, + false, + progress, + ); + if let Ok((_, Some(ref e))) = res { + tracing::warn!( + "`cargo metadata` failed on `{cargo_toml}`, but retry with `--no-deps` succeeded" + ); + tracing::debug!("{e:?}"); + } + res } fn fetch_metadata_(