diff options
author | Aleksey Kladov <[email protected]> | 2018-11-18 12:44:24 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-11-18 12:44:24 +0000 |
commit | cb22a799d60c6c5f81ad0f3d0361f575264f3bc2 (patch) | |
tree | 738b06fae809d32f76776d27c71fa869f5dd2544 /crates/ra_analysis/src/db.rs | |
parent | f1d8558cd5fe20a351496c39dbb8e15aa028803c (diff) |
Add Loc2IdMap
Diffstat (limited to 'crates/ra_analysis/src/db.rs')
-rw-r--r-- | crates/ra_analysis/src/db.rs | 8 |
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 @@ | |||
1 | use std::sync::Arc; | 1 | use std::sync::Arc; |
2 | 2 | ||
3 | use parking_lot::Mutex; | ||
4 | |||
3 | use ra_editor::LineIndex; | 5 | use ra_editor::LineIndex; |
4 | use ra_syntax::{SourceFileNode, SyntaxNode}; | 6 | use ra_syntax::{SourceFileNode, SyntaxNode}; |
5 | use salsa::{self, Database}; | 7 | use 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)] |
19 | pub(crate) struct RootDatabase { | 24 | pub(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 | ||
23 | impl salsa::Database for RootDatabase { | 29 | impl 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 | } |