From 3ab1519cb27b927074ed7fbbb18a856e6e7fabb8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 23 Jan 2019 23:14:13 +0300 Subject: Change ids strategy this is a part of larghish hir refactoring which aims to * replace per-source-root module trees with per crate trees * switch from a monotyped DedId to type-specific ids --- crates/ra_db/src/input.rs | 12 ++++++++++++ crates/ra_db/src/lib.rs | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'crates/ra_db/src') diff --git a/crates/ra_db/src/input.rs b/crates/ra_db/src/input.rs index b5d63e820..9825d52cf 100644 --- a/crates/ra_db/src/input.rs +++ b/crates/ra_db/src/input.rs @@ -160,6 +160,7 @@ pub trait FilesDatabase: salsa::Database { /// Contents of the source root. #[salsa::input] fn source_root(&self, id: SourceRootId) -> Arc; + fn source_root_crates(&self, id: SourceRootId) -> Arc>; /// The set of "local" (that is, from the current workspace) roots. /// Files in local roots are assumed to change frequently. #[salsa::input] @@ -173,6 +174,17 @@ pub trait FilesDatabase: salsa::Database { fn crate_graph(&self) -> Arc; } +fn source_root_crates(db: &impl FilesDatabase, id: SourceRootId) -> Arc> { + let root = db.source_root(id); + let graph = db.crate_graph(); + let res = root + .files + .values() + .filter_map(|&it| graph.crate_id_for_crate_root(it)) + .collect::>(); + Arc::new(res) +} + #[cfg(test)] mod tests { use super::{CrateGraph, FileId, SmolStr}; diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index 32d7e09b9..84759c75a 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs @@ -13,7 +13,7 @@ pub use crate::{ cancellation::Canceled, input::{ FilesDatabase, FileId, CrateId, SourceRoot, SourceRootId, CrateGraph, Dependency, - FileTextQuery, FileSourceRootQuery, SourceRootQuery, LocalRootsQuery, LibraryRootsQuery, CrateGraphQuery, + FileTextQuery, FileSourceRootQuery, SourceRootQuery, SourceRootCratesQuery, LocalRootsQuery, LibraryRootsQuery, CrateGraphQuery, FileRelativePathQuery }, loc2id::LocationIntener, -- cgit v1.2.3