Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/fetch_crates.rs')
-rw-r--r--crates/ide/src/fetch_crates.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/crates/ide/src/fetch_crates.rs b/crates/ide/src/fetch_crates.rs
index 5ed2144430..956379e722 100644
--- a/crates/ide/src/fetch_crates.rs
+++ b/crates/ide/src/fetch_crates.rs
@@ -1,6 +1,6 @@
use ide_db::{
- base_db::{CrateOrigin, SourceDatabase},
FileId, FxIndexSet, RootDatabase,
+ base_db::{CrateOrigin, RootQueryDb},
};
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
@@ -20,21 +20,24 @@ pub struct CrateInfo {
//
// ![Show Dependency Tree](https://user-images.githubusercontent.com/5748995/229394139-2625beab-f4c9-484b-84ed-ad5dee0b1e1a.png)
pub(crate) fn fetch_crates(db: &RootDatabase) -> FxIndexSet<CrateInfo> {
- let crate_graph = db.crate_graph();
- crate_graph
+ db.all_crates()
.iter()
- .map(|crate_id| &crate_graph[crate_id])
- .filter(|&data| !matches!(data.origin, CrateOrigin::Local { .. }))
- .map(crate_info)
+ .copied()
+ .map(|crate_id| (crate_id.data(db), crate_id.extra_data(db)))
+ .filter(|(data, _)| !matches!(data.origin, CrateOrigin::Local { .. }))
+ .map(|(data, extra_data)| crate_info(data, extra_data))
.collect()
}
-fn crate_info(data: &ide_db::base_db::CrateData) -> CrateInfo {
- let crate_name = crate_name(data);
- let version = data.version.clone();
+fn crate_info(
+ data: &ide_db::base_db::BuiltCrateData,
+ extra_data: &ide_db::base_db::ExtraCrateData,
+) -> CrateInfo {
+ let crate_name = crate_name(extra_data);
+ let version = extra_data.version.clone();
CrateInfo { name: crate_name, version, root_file_id: data.root_file_id }
}
-fn crate_name(data: &ide_db::base_db::CrateData) -> Option<String> {
+fn crate_name(data: &ide_db::base_db::ExtraCrateData) -> Option<String> {
data.display_name.as_ref().map(|it| it.canonical_name().as_str().to_owned())
}