Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/sysroot.rs')
-rw-r--r--crates/project-model/src/sysroot.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs
index fe046dd146..d52e448d74 100644
--- a/crates/project-model/src/sysroot.rs
+++ b/crates/project-model/src/sysroot.rs
@@ -6,7 +6,7 @@
use std::{env, fs, iter, ops, path::PathBuf, process::Command};
-use anyhow::{format_err, Result};
+use anyhow::{format_err, Context, Result};
use base_db::CrateName;
use la_arena::{Arena, Idx};
use paths::{AbsPath, AbsPathBuf};
@@ -119,12 +119,15 @@ impl Sysroot {
get_rustc_src(&self.root)
}
- pub fn discover_rustc(&self) -> Result<AbsPathBuf, std::io::Error> {
+ pub fn discover_rustc(&self) -> anyhow::Result<AbsPathBuf> {
let rustc = self.root.join("bin/rustc");
tracing::debug!(?rustc, "checking for rustc binary at location");
match fs::metadata(&rustc) {
Ok(_) => Ok(rustc),
- Err(e) => Err(e),
+ Err(e) => Err(e).context(format!(
+ "failed to discover rustc in sysroot: {:?}",
+ AsRef::<std::path::Path>::as_ref(&self.root)
+ )),
}
}