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