aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/db.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-11-18 13:21:23 +0000
committerAleksey Kladov <[email protected]>2018-11-18 13:21:23 +0000
commit4e48917c00d24e1e1785e1959a2f3495a902410b (patch)
tree0ae3a1f3c92ce9e308934e023d6a24385b4260d6 /crates/ra_analysis/src/db.rs
parentcb22a799d60c6c5f81ad0f3d0361f575264f3bc2 (diff)
use loc2id for FnIds
Diffstat (limited to 'crates/ra_analysis/src/db.rs')
-rw-r--r--crates/ra_analysis/src/db.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/crates/ra_analysis/src/db.rs b/crates/ra_analysis/src/db.rs
index baf6d915a..d78b6afb9 100644
--- a/crates/ra_analysis/src/db.rs
+++ b/crates/ra_analysis/src/db.rs
@@ -1,7 +1,5 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use parking_lot::Mutex;
4
5use ra_editor::LineIndex; 3use ra_editor::LineIndex;
6use ra_syntax::{SourceFileNode, SyntaxNode}; 4use ra_syntax::{SourceFileNode, SyntaxNode};
7use salsa::{self, Database}; 5use salsa::{self, Database};
@@ -11,19 +9,17 @@ use crate::{
11 descriptors::{ 9 descriptors::{
12 DescriptorDatabase, FnScopesQuery, FnSyntaxQuery, ModuleScopeQuery, ModuleTreeQuery, 10 DescriptorDatabase, FnScopesQuery, FnSyntaxQuery, ModuleScopeQuery, ModuleTreeQuery,
13 SubmodulesQuery, 11 SubmodulesQuery,
14 module::{ModuleSource, ModuleId},
15 }, 12 },
16 input::SourceRootId,
17 symbol_index::SymbolIndex, 13 symbol_index::SymbolIndex,
18 syntax_ptr::SyntaxPtr, 14 syntax_ptr::SyntaxPtr,
19 loc2id::Loc2IdMap, 15 loc2id::{IdMaps, IdDatabase},
20 Cancelable, Canceled, FileId, 16 Cancelable, Canceled, FileId,
21}; 17};
22 18
23#[derive(Debug)] 19#[derive(Debug)]
24pub(crate) struct RootDatabase { 20pub(crate) struct RootDatabase {
25 runtime: salsa::Runtime<RootDatabase>, 21 runtime: salsa::Runtime<RootDatabase>,
26 loc2id: Arc<Mutex<Loc2IdMap<(SourceRootId, ModuleSource), ModuleId>>>, 22 id_maps: IdMaps,
27} 23}
28 24
29impl salsa::Database for RootDatabase { 25impl salsa::Database for RootDatabase {
@@ -35,8 +31,8 @@ impl salsa::Database for RootDatabase {
35impl Default for RootDatabase { 31impl Default for RootDatabase {
36 fn default() -> RootDatabase { 32 fn default() -> RootDatabase {
37 let mut db = RootDatabase { 33 let mut db = RootDatabase {
38 runtime: Default::default(), 34 runtime: salsa::Runtime::default(),
39 loc2id: Default::default(), 35 id_maps: IdMaps::default(),
40 }; 36 };
41 db.query_mut(crate::input::SourceRootQuery) 37 db.query_mut(crate::input::SourceRootQuery)
42 .set(crate::input::WORKSPACE, Default::default()); 38 .set(crate::input::WORKSPACE, Default::default());
@@ -60,11 +56,17 @@ impl salsa::ParallelDatabase for RootDatabase {
60 fn snapshot(&self) -> salsa::Snapshot<RootDatabase> { 56 fn snapshot(&self) -> salsa::Snapshot<RootDatabase> {
61 salsa::Snapshot::new(RootDatabase { 57 salsa::Snapshot::new(RootDatabase {
62 runtime: self.runtime.snapshot(self), 58 runtime: self.runtime.snapshot(self),
63 loc2id: Arc::clone(&self.loc2id), 59 id_maps: self.id_maps.clone(),
64 }) 60 })
65 } 61 }
66} 62}
67 63
64impl IdDatabase for RootDatabase {
65 fn id_maps(&self) -> &IdMaps {
66 &self.id_maps
67 }
68}
69
68salsa::database_storage! { 70salsa::database_storage! {
69 pub(crate) struct RootDatabaseStorage for RootDatabase { 71 pub(crate) struct RootDatabaseStorage for RootDatabase {
70 impl crate::input::FilesDatabase { 72 impl crate::input::FilesDatabase {