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.rs | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/crates/ide/src/fetch_crates.rs b/crates/ide/src/fetch_crates.rs index 5750d6b426..916c26855a 100644 --- a/crates/ide/src/fetch_crates.rs +++ b/crates/ide/src/fetch_crates.rs @@ -1,5 +1,5 @@ use ide_db::{ - base_db::{CrateOrigin, SourceDatabase, SourceDatabaseExt}, + base_db::{CrateOrigin, SourceDatabase}, FxIndexSet, RootDatabase, }; @@ -22,13 +22,13 @@ pub(crate) fn fetch_crates(db: &RootDatabase) -> FxIndexSet<CrateInfo> { .iter() .map(|crate_id| &crate_graph[crate_id]) .filter(|&data| !matches!(data.origin, CrateOrigin::Local { .. })) - .filter_map(|data| crate_info(data, db)) + .filter_map(|data| crate_info(data)) .collect() } -fn crate_info(data: &ide_db::base_db::CrateData, db: &RootDatabase) -> Option<CrateInfo> { +fn crate_info(data: &ide_db::base_db::CrateData) -> Option<CrateInfo> { let crate_name = crate_name(data); - let crate_path = crate_path(db, data, &crate_name); + let crate_path = data.crate_root_path.as_ref().map(|p| p.display().to_string()); if let Some(crate_path) = crate_path { let version = data.version.clone().unwrap_or_else(|| "".to_owned()); Some(CrateInfo { name: crate_name, version, path: crate_path }) @@ -43,29 +43,3 @@ fn crate_name(data: &ide_db::base_db::CrateData) -> String { .map(|it| it.canonical_name().to_owned()) .unwrap_or("unknown".to_string()) } - -fn crate_path( - db: &RootDatabase, - data: &ide_db::base_db::CrateData, - crate_name: &str, -) -> Option<String> { - let source_root_id = db.file_source_root(data.root_file_id); - let source_root = db.source_root(source_root_id); - let source_root_path = source_root.path_for_file(&data.root_file_id); - source_root_path.cloned().and_then(|mut root_path| { - let mut crate_path = None; - while let Some(vfs_path) = root_path.parent() { - match vfs_path.name_and_extension() { - Some((name, _)) => { - if name.starts_with(crate_name) { - crate_path = Some(vfs_path.to_string()); - break; - } - } - None => break, - } - root_path = vfs_path; - } - crate_path - }) -} |