aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_def/src/db.rs')
-rw-r--r--crates/ra_hir_def/src/db.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/crates/ra_hir_def/src/db.rs b/crates/ra_hir_def/src/db.rs
index 348aca07f..844f8bbe8 100644
--- a/crates/ra_hir_def/src/db.rs
+++ b/crates/ra_hir_def/src/db.rs
@@ -8,30 +8,32 @@ use ra_syntax::ast;
8use crate::{ 8use crate::{
9 adt::{EnumData, StructData}, 9 adt::{EnumData, StructData},
10 body::{scope::ExprScopes, Body, BodySourceMap}, 10 body::{scope::ExprScopes, Body, BodySourceMap},
11 imp::ImplData, 11 generics::GenericParams,
12 impls::ImplData,
12 nameres::{ 13 nameres::{
13 raw::{ImportSourceMap, RawItems}, 14 raw::{ImportSourceMap, RawItems},
14 CrateDefMap, 15 CrateDefMap,
15 }, 16 },
16 DefWithBodyId, EnumId, ImplId, ItemLoc, StructOrUnionId, 17 traits::TraitData,
18 DefWithBodyId, EnumId, GenericDefId, ImplId, ItemLoc, StructOrUnionId, TraitId,
17}; 19};
18 20
19#[salsa::query_group(InternDatabaseStorage)] 21#[salsa::query_group(InternDatabaseStorage)]
20pub trait InternDatabase: SourceDatabase { 22pub trait InternDatabase: SourceDatabase {
21 #[salsa::interned] 23 #[salsa::interned]
22 fn intern_function(&self, loc: ItemLoc<ast::FnDef>) -> crate::FunctionId; 24 fn intern_function(&self, loc: crate::FunctionLoc) -> crate::FunctionId;
23 #[salsa::interned] 25 #[salsa::interned]
24 fn intern_struct_or_union(&self, loc: ItemLoc<ast::StructDef>) -> crate::StructOrUnionId; 26 fn intern_struct_or_union(&self, loc: ItemLoc<ast::StructDef>) -> crate::StructOrUnionId;
25 #[salsa::interned] 27 #[salsa::interned]
26 fn intern_enum(&self, loc: ItemLoc<ast::EnumDef>) -> crate::EnumId; 28 fn intern_enum(&self, loc: ItemLoc<ast::EnumDef>) -> crate::EnumId;
27 #[salsa::interned] 29 #[salsa::interned]
28 fn intern_const(&self, loc: ItemLoc<ast::ConstDef>) -> crate::ConstId; 30 fn intern_const(&self, loc: crate::ConstLoc) -> crate::ConstId;
29 #[salsa::interned] 31 #[salsa::interned]
30 fn intern_static(&self, loc: ItemLoc<ast::StaticDef>) -> crate::StaticId; 32 fn intern_static(&self, loc: ItemLoc<ast::StaticDef>) -> crate::StaticId;
31 #[salsa::interned] 33 #[salsa::interned]
32 fn intern_trait(&self, loc: ItemLoc<ast::TraitDef>) -> crate::TraitId; 34 fn intern_trait(&self, loc: ItemLoc<ast::TraitDef>) -> crate::TraitId;
33 #[salsa::interned] 35 #[salsa::interned]
34 fn intern_type_alias(&self, loc: ItemLoc<ast::TypeAliasDef>) -> crate::TypeAliasId; 36 fn intern_type_alias(&self, loc: crate::TypeAliasLoc) -> crate::TypeAliasId;
35 #[salsa::interned] 37 #[salsa::interned]
36 fn intern_impl(&self, loc: ItemLoc<ast::ImplBlock>) -> crate::ImplId; 38 fn intern_impl(&self, loc: ItemLoc<ast::ImplBlock>) -> crate::ImplId;
37} 39}
@@ -59,6 +61,9 @@ pub trait DefDatabase2: InternDatabase + AstDatabase {
59 #[salsa::invoke(ImplData::impl_data_query)] 61 #[salsa::invoke(ImplData::impl_data_query)]
60 fn impl_data(&self, e: ImplId) -> Arc<ImplData>; 62 fn impl_data(&self, e: ImplId) -> Arc<ImplData>;
61 63
64 #[salsa::invoke(TraitData::trait_data_query)]
65 fn trait_data(&self, e: TraitId) -> Arc<TraitData>;
66
62 #[salsa::invoke(Body::body_with_source_map_query)] 67 #[salsa::invoke(Body::body_with_source_map_query)]
63 fn body_with_source_map(&self, def: DefWithBodyId) -> (Arc<Body>, Arc<BodySourceMap>); 68 fn body_with_source_map(&self, def: DefWithBodyId) -> (Arc<Body>, Arc<BodySourceMap>);
64 69
@@ -67,4 +72,7 @@ pub trait DefDatabase2: InternDatabase + AstDatabase {
67 72
68 #[salsa::invoke(ExprScopes::expr_scopes_query)] 73 #[salsa::invoke(ExprScopes::expr_scopes_query)]
69 fn expr_scopes(&self, def: DefWithBodyId) -> Arc<ExprScopes>; 74 fn expr_scopes(&self, def: DefWithBodyId) -> Arc<ExprScopes>;
75
76 #[salsa::invoke(GenericParams::generic_params_query)]
77 fn generic_params(&self, def: GenericDefId) -> Arc<GenericParams>;
70} 78}