aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r--crates/ra_hir/src/db.rs38
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
3use std::sync::Arc; 3use std::sync::Arc;
4 4
5use hir_def::attr::Attrs;
6use ra_db::salsa; 5use ra_db::salsa;
7use ra_syntax::SmolStr;
8 6
9use crate::{ 7use 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
22pub use hir_def::db::{ 18pub 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};
29pub use hir_expand::db::{ 25pub 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)]
37pub 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)]
56pub trait HirDatabase: DefDatabase + AstDatabase { 32pub 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