diff options
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r-- | crates/ra_hir/src/db.rs | 38 |
1 files changed, 7 insertions, 31 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 85d46b485..3ae5df8d5 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs | |||
@@ -2,58 +2,34 @@ | |||
2 | 2 | ||
3 | use std::sync::Arc; | 3 | use std::sync::Arc; |
4 | 4 | ||
5 | use hir_def::attr::Attrs; | ||
6 | use ra_db::salsa; | 5 | use ra_db::salsa; |
7 | use ra_syntax::SmolStr; | ||
8 | 6 | ||
9 | use crate::{ | 7 | use crate::{ |
10 | debug::HirDebugDatabase, | ||
11 | ids, | 8 | ids, |
12 | lang_item::{LangItemTarget, LangItems}, | ||
13 | ty::{ | 9 | ty::{ |
14 | method_resolution::CrateImplBlocks, | 10 | method_resolution::CrateImplBlocks, |
15 | traits::{AssocTyValue, Impl}, | 11 | traits::{AssocTyValue, Impl}, |
16 | CallableDef, FnSig, GenericPredicate, InferenceResult, Namespace, Substs, Ty, TypableDef, | 12 | CallableDef, FnSig, GenericPredicate, InferenceResult, Namespace, Substs, Ty, TypableDef, |
17 | TypeCtor, | 13 | TypeCtor, |
18 | }, | 14 | }, |
19 | Crate, DefWithBody, GenericDef, ImplBlock, Module, StructField, Trait, | 15 | Crate, DefWithBody, GenericDef, ImplBlock, StructField, Trait, |
20 | }; | 16 | }; |
21 | 17 | ||
22 | pub use hir_def::db::{ | 18 | pub use hir_def::db::{ |
23 | BodyQuery, BodyWithSourceMapQuery, ConstDataQuery, CrateDefMapQuery, DefDatabase2, | 19 | BodyQuery, BodyWithSourceMapQuery, ConstDataQuery, CrateDefMapQuery, CrateLangItemsQuery, |
24 | DefDatabase2Storage, EnumDataQuery, ExprScopesQuery, FunctionDataQuery, GenericParamsQuery, | 20 | DefDatabase, DefDatabaseStorage, DocumentationQuery, EnumDataQuery, ExprScopesQuery, |
25 | ImplDataQuery, InternDatabase, InternDatabaseStorage, RawItemsQuery, | 21 | FunctionDataQuery, GenericParamsQuery, ImplDataQuery, InternDatabase, InternDatabaseStorage, |
26 | RawItemsWithSourceMapQuery, StaticDataQuery, StructDataQuery, TraitDataQuery, | 22 | LangItemQuery, ModuleLangItemsQuery, RawItemsQuery, RawItemsWithSourceMapQuery, |
27 | TypeAliasDataQuery, | 23 | StaticDataQuery, StructDataQuery, TraitDataQuery, TypeAliasDataQuery, |
28 | }; | 24 | }; |
29 | pub use hir_expand::db::{ | 25 | pub use hir_expand::db::{ |
30 | AstDatabase, AstDatabaseStorage, AstIdMapQuery, MacroArgQuery, MacroDefQuery, MacroExpandQuery, | 26 | AstDatabase, AstDatabaseStorage, AstIdMapQuery, MacroArgQuery, MacroDefQuery, MacroExpandQuery, |
31 | ParseMacroQuery, | 27 | ParseMacroQuery, |
32 | }; | 28 | }; |
33 | 29 | ||
34 | // This database uses `AstDatabase` internally, | ||
35 | #[salsa::query_group(DefDatabaseStorage)] | ||
36 | #[salsa::requires(AstDatabase)] | ||
37 | pub trait DefDatabase: HirDebugDatabase + DefDatabase2 { | ||
38 | #[salsa::invoke(LangItems::module_lang_items_query)] | ||
39 | fn module_lang_items(&self, module: Module) -> Option<Arc<LangItems>>; | ||
40 | |||
41 | #[salsa::invoke(LangItems::crate_lang_items_query)] | ||
42 | fn crate_lang_items(&self, krate: Crate) -> Arc<LangItems>; | ||
43 | |||
44 | #[salsa::invoke(LangItems::lang_item_query)] | ||
45 | fn lang_item(&self, start_crate: Crate, item: SmolStr) -> Option<LangItemTarget>; | ||
46 | |||
47 | #[salsa::invoke(crate::code_model::docs::documentation_query)] | ||
48 | fn documentation(&self, def: crate::DocDef) -> Option<crate::Documentation>; | ||
49 | |||
50 | #[salsa::invoke(crate::code_model::attrs::attributes_query)] | ||
51 | fn attrs(&self, def: crate::AttrDef) -> Attrs; | ||
52 | } | ||
53 | |||
54 | #[salsa::query_group(HirDatabaseStorage)] | 30 | #[salsa::query_group(HirDatabaseStorage)] |
55 | #[salsa::requires(salsa::Database)] | 31 | #[salsa::requires(salsa::Database)] |
56 | pub trait HirDatabase: DefDatabase + AstDatabase { | 32 | pub trait HirDatabase: DefDatabase { |
57 | #[salsa::invoke(crate::ty::infer_query)] | 33 | #[salsa::invoke(crate::ty::infer_query)] |
58 | fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>; | 34 | fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>; |
59 | 35 | ||