diff options
Diffstat (limited to 'crates/ra_hir_def/src/db.rs')
-rw-r--r-- | crates/ra_hir_def/src/db.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/db.rs b/crates/ra_hir_def/src/db.rs index f6f976c86..b271636b0 100644 --- a/crates/ra_hir_def/src/db.rs +++ b/crates/ra_hir_def/src/db.rs | |||
@@ -1,8 +1,12 @@ | |||
1 | //! Defines database & queries for name resolution. | 1 | //! Defines database & queries for name resolution. |
2 | use std::sync::Arc; | ||
2 | 3 | ||
4 | use hir_expand::{db::AstDatabase, HirFileId}; | ||
3 | use ra_db::{salsa, SourceDatabase}; | 5 | use ra_db::{salsa, SourceDatabase}; |
4 | use ra_syntax::ast; | 6 | use ra_syntax::ast; |
5 | 7 | ||
8 | use crate::nameres::raw::{ImportSourceMap, RawItems}; | ||
9 | |||
6 | #[salsa::query_group(InternDatabaseStorage)] | 10 | #[salsa::query_group(InternDatabaseStorage)] |
7 | pub trait InternDatabase: SourceDatabase { | 11 | pub trait InternDatabase: SourceDatabase { |
8 | #[salsa::interned] | 12 | #[salsa::interned] |
@@ -10,6 +14,8 @@ pub trait InternDatabase: SourceDatabase { | |||
10 | #[salsa::interned] | 14 | #[salsa::interned] |
11 | fn intern_struct(&self, loc: crate::ItemLoc<ast::StructDef>) -> crate::StructId; | 15 | fn intern_struct(&self, loc: crate::ItemLoc<ast::StructDef>) -> crate::StructId; |
12 | #[salsa::interned] | 16 | #[salsa::interned] |
17 | fn intern_union(&self, loc: crate::ItemLoc<ast::StructDef>) -> crate::UnionId; | ||
18 | #[salsa::interned] | ||
13 | fn intern_enum(&self, loc: crate::ItemLoc<ast::EnumDef>) -> crate::EnumId; | 19 | fn intern_enum(&self, loc: crate::ItemLoc<ast::EnumDef>) -> crate::EnumId; |
14 | #[salsa::interned] | 20 | #[salsa::interned] |
15 | fn intern_const(&self, loc: crate::ItemLoc<ast::ConstDef>) -> crate::ConstId; | 21 | fn intern_const(&self, loc: crate::ItemLoc<ast::ConstDef>) -> crate::ConstId; |
@@ -20,3 +26,15 @@ pub trait InternDatabase: SourceDatabase { | |||
20 | #[salsa::interned] | 26 | #[salsa::interned] |
21 | fn intern_type_alias(&self, loc: crate::ItemLoc<ast::TypeAliasDef>) -> crate::TypeAliasId; | 27 | fn intern_type_alias(&self, loc: crate::ItemLoc<ast::TypeAliasDef>) -> crate::TypeAliasId; |
22 | } | 28 | } |
29 | |||
30 | #[salsa::query_group(DefDatabase2Storage)] | ||
31 | pub trait DefDatabase2: InternDatabase + AstDatabase { | ||
32 | #[salsa::invoke(RawItems::raw_items_with_source_map_query)] | ||
33 | fn raw_items_with_source_map( | ||
34 | &self, | ||
35 | file_id: HirFileId, | ||
36 | ) -> (Arc<RawItems>, Arc<ImportSourceMap>); | ||
37 | |||
38 | #[salsa::invoke(RawItems::raw_items_query)] | ||
39 | fn raw_items(&self, file_id: HirFileId) -> Arc<RawItems>; | ||
40 | } | ||