aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/hir/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/hir/db.rs')
-rw-r--r--crates/ra_analysis/src/hir/db.rs63
1 files changed, 63 insertions, 0 deletions
diff --git a/crates/ra_analysis/src/hir/db.rs b/crates/ra_analysis/src/hir/db.rs
new file mode 100644
index 000000000..3cdf8e6d6
--- /dev/null
+++ b/crates/ra_analysis/src/hir/db.rs
@@ -0,0 +1,63 @@
1use std::sync::Arc;
2
3use ra_syntax::{
4 SyntaxNode,
5 ast::FnDefNode,
6};
7
8use crate::{
9 FileId,
10 db::SyntaxDatabase,
11 hir::function::{FnId, FnScopes},
12 hir::module::{
13 ModuleId, ModuleTree, ModuleSource,
14 nameres::{ItemMap, InputModuleItems, FileItems, FileItemId}
15 },
16 input::SourceRootId,
17 loc2id::{IdDatabase},
18 Cancelable,
19};
20
21salsa::query_group! {
22pub(crate) trait HirDatabase: SyntaxDatabase + IdDatabase {
23 fn fn_scopes(fn_id: FnId) -> Arc<FnScopes> {
24 type FnScopesQuery;
25 use fn crate::hir::function::imp::fn_scopes;
26 }
27
28 fn _file_items(file_id: FileId) -> Arc<FileItems> {
29 type FileItemsQuery;
30 storage dependencies;
31 use fn crate::hir::module::nameres::file_items;
32 }
33
34 fn _file_item(file_id: FileId, file_item_id: FileItemId) -> SyntaxNode {
35 type FileItemQuery;
36 storage dependencies;
37 use fn crate::hir::module::nameres::file_item;
38 }
39
40 fn _input_module_items(source_root_id: SourceRootId, module_id: ModuleId) -> Cancelable<Arc<InputModuleItems>> {
41 type InputModuleItemsQuery;
42 use fn crate::hir::module::nameres::input_module_items;
43 }
44 fn _item_map(source_root_id: SourceRootId) -> Cancelable<Arc<ItemMap>> {
45 type ItemMapQuery;
46 use fn crate::hir::module::nameres::item_map;
47 }
48 fn _module_tree(source_root_id: SourceRootId) -> Cancelable<Arc<ModuleTree>> {
49 type ModuleTreeQuery;
50 use fn crate::hir::module::imp::module_tree;
51 }
52 fn _fn_syntax(fn_id: FnId) -> FnDefNode {
53 type FnSyntaxQuery;
54 // Don't retain syntax trees in memory
55 storage dependencies;
56 use fn crate::hir::function::imp::fn_syntax;
57 }
58 fn _submodules(source: ModuleSource) -> Cancelable<Arc<Vec<crate::hir::module::imp::Submodule>>> {
59 type SubmodulesQuery;
60 use fn crate::hir::module::imp::submodules;
61 }
62 }
63}