diff options
author | Jonas Schievink <[email protected]> | 2020-09-11 13:48:56 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-09-11 13:48:56 +0100 |
commit | 681ac6294ada917b8c5fbba60f9ba1c82da338aa (patch) | |
tree | cc663cb5aefb149c0a0bdb666d60b2d46c8cb265 /crates/project_model/src/sysroot.rs | |
parent | 4f1167d8ddac9d392f034341e6bc032b51014918 (diff) |
Report better errors in project.json/sysroot
Diffstat (limited to 'crates/project_model/src/sysroot.rs')
-rw-r--r-- | crates/project_model/src/sysroot.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/crates/project_model/src/sysroot.rs b/crates/project_model/src/sysroot.rs index 74c0eda9a..871808d89 100644 --- a/crates/project_model/src/sysroot.rs +++ b/crates/project_model/src/sysroot.rs | |||
@@ -51,11 +51,11 @@ impl Sysroot { | |||
51 | pub fn discover(cargo_toml: &AbsPath) -> Result<Sysroot> { | 51 | pub fn discover(cargo_toml: &AbsPath) -> Result<Sysroot> { |
52 | let current_dir = cargo_toml.parent().unwrap(); | 52 | let current_dir = cargo_toml.parent().unwrap(); |
53 | let sysroot_src_dir = discover_sysroot_src_dir(current_dir)?; | 53 | let sysroot_src_dir = discover_sysroot_src_dir(current_dir)?; |
54 | let res = Sysroot::load(&sysroot_src_dir); | 54 | let res = Sysroot::load(&sysroot_src_dir)?; |
55 | Ok(res) | 55 | Ok(res) |
56 | } | 56 | } |
57 | 57 | ||
58 | pub fn load(sysroot_src_dir: &AbsPath) -> Sysroot { | 58 | pub fn load(sysroot_src_dir: &AbsPath) -> Result<Sysroot> { |
59 | let mut sysroot = Sysroot { crates: Arena::default() }; | 59 | let mut sysroot = Sysroot { crates: Arena::default() }; |
60 | 60 | ||
61 | for name in SYSROOT_CRATES.trim().lines() { | 61 | for name in SYSROOT_CRATES.trim().lines() { |
@@ -89,7 +89,14 @@ impl Sysroot { | |||
89 | } | 89 | } |
90 | } | 90 | } |
91 | 91 | ||
92 | sysroot | 92 | if sysroot.by_name("core").is_none() { |
93 | anyhow::bail!( | ||
94 | "could not find libcore in sysroot path `{}`", | ||
95 | sysroot_src_dir.as_ref().display() | ||
96 | ); | ||
97 | } | ||
98 | |||
99 | Ok(sysroot) | ||
93 | } | 100 | } |
94 | 101 | ||
95 | fn by_name(&self, name: &str) -> Option<SysrootCrate> { | 102 | fn by_name(&self, name: &str) -> Option<SysrootCrate> { |