diff options
author | Aleksey Kladov <[email protected]> | 2018-11-18 13:21:23 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-11-18 13:21:23 +0000 |
commit | 4e48917c00d24e1e1785e1959a2f3495a902410b (patch) | |
tree | 0ae3a1f3c92ce9e308934e023d6a24385b4260d6 /crates/ra_analysis/src/db.rs | |
parent | cb22a799d60c6c5f81ad0f3d0361f575264f3bc2 (diff) |
use loc2id for FnIds
Diffstat (limited to 'crates/ra_analysis/src/db.rs')
-rw-r--r-- | crates/ra_analysis/src/db.rs | 20 |
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 @@ | |||
1 | use std::sync::Arc; | 1 | use std::sync::Arc; |
2 | 2 | ||
3 | use parking_lot::Mutex; | ||
4 | |||
5 | use ra_editor::LineIndex; | 3 | use ra_editor::LineIndex; |
6 | use ra_syntax::{SourceFileNode, SyntaxNode}; | 4 | use ra_syntax::{SourceFileNode, SyntaxNode}; |
7 | use salsa::{self, Database}; | 5 | use 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)] |
24 | pub(crate) struct RootDatabase { | 20 | pub(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 | ||
29 | impl salsa::Database for RootDatabase { | 25 | impl salsa::Database for RootDatabase { |
@@ -35,8 +31,8 @@ impl salsa::Database for RootDatabase { | |||
35 | impl Default for RootDatabase { | 31 | impl 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 | ||
64 | impl IdDatabase for RootDatabase { | ||
65 | fn id_maps(&self) -> &IdMaps { | ||
66 | &self.id_maps | ||
67 | } | ||
68 | } | ||
69 | |||
68 | salsa::database_storage! { | 70 | salsa::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 { |