diff options
Diffstat (limited to 'crates/ra_db')
-rw-r--r-- | crates/ra_db/Cargo.toml | 4 | ||||
-rw-r--r-- | crates/ra_db/src/lib.rs | 16 |
2 files changed, 8 insertions, 12 deletions
diff --git a/crates/ra_db/Cargo.toml b/crates/ra_db/Cargo.toml index 372fb242b..5f334d04f 100644 --- a/crates/ra_db/Cargo.toml +++ b/crates/ra_db/Cargo.toml | |||
@@ -3,13 +3,13 @@ edition = "2018" | |||
3 | name = "ra_db" | 3 | name = "ra_db" |
4 | version = "0.1.0" | 4 | version = "0.1.0" |
5 | authors = ["rust-analyzer developers"] | 5 | authors = ["rust-analyzer developers"] |
6 | license = "MIT OR Apache-2.0" | ||
6 | 7 | ||
7 | [lib] | 8 | [lib] |
8 | doctest = false | 9 | doctest = false |
9 | 10 | ||
10 | [dependencies] | 11 | [dependencies] |
11 | salsa = "0.14.1" | 12 | salsa = "0.15.0" |
12 | relative-path = "1.0.0" | ||
13 | rustc-hash = "1.1.0" | 13 | rustc-hash = "1.1.0" |
14 | 14 | ||
15 | ra_syntax = { path = "../ra_syntax" } | 15 | ra_syntax = { path = "../ra_syntax" } |
diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index 1ddacc1f6..f25be24fe 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs | |||
@@ -16,9 +16,8 @@ pub use crate::{ | |||
16 | SourceRoot, SourceRootId, | 16 | SourceRoot, SourceRootId, |
17 | }, | 17 | }, |
18 | }; | 18 | }; |
19 | pub use relative_path::{RelativePath, RelativePathBuf}; | ||
20 | pub use salsa; | 19 | pub use salsa; |
21 | pub use vfs::{file_set::FileSet, AbsPathBuf, VfsPath}; | 20 | pub use vfs::{file_set::FileSet, VfsPath}; |
22 | 21 | ||
23 | #[macro_export] | 22 | #[macro_export] |
24 | macro_rules! impl_intern_key { | 23 | macro_rules! impl_intern_key { |
@@ -93,9 +92,9 @@ pub trait FileLoader { | |||
93 | fn file_text(&self, file_id: FileId) -> Arc<String>; | 92 | fn file_text(&self, file_id: FileId) -> Arc<String>; |
94 | /// Note that we intentionally accept a `&str` and not a `&Path` here. This | 93 | /// Note that we intentionally accept a `&str` and not a `&Path` here. This |
95 | /// method exists to handle `#[path = "/some/path.rs"] mod foo;` and such, | 94 | /// method exists to handle `#[path = "/some/path.rs"] mod foo;` and such, |
96 | /// so the input is guaranteed to be utf-8 string. We might introduce | 95 | /// so the input is guaranteed to be utf-8 string. One might be tempted to |
97 | /// `struct StrPath(str)` for clarity some day, but it's a bit messy, so we | 96 | /// introduce some kind of "utf-8 path with / separators", but that's a bad idea. Behold |
98 | /// get by with a `&str` for the time being. | 97 | /// `#[path = "C://no/way"]` |
99 | fn resolve_path(&self, anchor: FileId, path: &str) -> Option<FileId>; | 98 | fn resolve_path(&self, anchor: FileId, path: &str) -> Option<FileId>; |
100 | fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>>; | 99 | fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>>; |
101 | } | 100 | } |
@@ -113,7 +112,7 @@ pub trait SourceDatabase: CheckCanceled + FileLoader + std::fmt::Debug { | |||
113 | fn crate_graph(&self) -> Arc<CrateGraph>; | 112 | fn crate_graph(&self) -> Arc<CrateGraph>; |
114 | } | 113 | } |
115 | 114 | ||
116 | fn parse_query(db: &impl SourceDatabase, file_id: FileId) -> Parse<ast::SourceFile> { | 115 | fn parse_query(db: &dyn SourceDatabase, file_id: FileId) -> Parse<ast::SourceFile> { |
117 | let _p = profile("parse_query").detail(|| format!("{:?}", file_id)); | 116 | let _p = profile("parse_query").detail(|| format!("{:?}", file_id)); |
118 | let text = db.file_text(file_id); | 117 | let text = db.file_text(file_id); |
119 | SourceFile::parse(&*text) | 118 | SourceFile::parse(&*text) |
@@ -136,10 +135,7 @@ pub trait SourceDatabaseExt: SourceDatabase { | |||
136 | fn source_root_crates(&self, id: SourceRootId) -> Arc<FxHashSet<CrateId>>; | 135 | fn source_root_crates(&self, id: SourceRootId) -> Arc<FxHashSet<CrateId>>; |
137 | } | 136 | } |
138 | 137 | ||
139 | fn source_root_crates( | 138 | fn source_root_crates(db: &dyn SourceDatabaseExt, id: SourceRootId) -> Arc<FxHashSet<CrateId>> { |
140 | db: &(impl SourceDatabaseExt + SourceDatabase), | ||
141 | id: SourceRootId, | ||
142 | ) -> Arc<FxHashSet<CrateId>> { | ||
143 | let graph = db.crate_graph(); | 139 | let graph = db.crate_graph(); |
144 | let res = graph | 140 | let res = graph |
145 | .iter() | 141 | .iter() |