aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_analysis/src/db.rs19
-rw-r--r--crates/ra_analysis/src/imp.rs12
-rw-r--r--crates/ra_analysis/src/lib.rs7
-rw-r--r--crates/ra_analysis/src/mock_analysis.rs2
-rw-r--r--crates/ra_lsp_server/src/main_loop/mod.rs2
-rw-r--r--crates/ra_lsp_server/src/path_map.rs5
-rw-r--r--crates/ra_lsp_server/src/server_world.rs10
7 files changed, 23 insertions, 34 deletions
diff --git a/crates/ra_analysis/src/db.rs b/crates/ra_analysis/src/db.rs
index 9548ec602..627512553 100644
--- a/crates/ra_analysis/src/db.rs
+++ b/crates/ra_analysis/src/db.rs
@@ -2,7 +2,7 @@ use std::sync::Arc;
2 2
3use ra_editor::LineIndex; 3use ra_editor::LineIndex;
4use ra_syntax::{File, SyntaxNode}; 4use ra_syntax::{File, SyntaxNode};
5use salsa; 5use salsa::{self, Database};
6 6
7use crate::{ 7use crate::{
8 db, 8 db,
@@ -15,7 +15,7 @@ use crate::{
15 Cancelable, Canceled, FileId, 15 Cancelable, Canceled, FileId,
16}; 16};
17 17
18#[derive(Default, Debug)] 18#[derive(Debug)]
19pub(crate) struct RootDatabase { 19pub(crate) struct RootDatabase {
20 runtime: salsa::Runtime<RootDatabase>, 20 runtime: salsa::Runtime<RootDatabase>,
21} 21}
@@ -26,6 +26,21 @@ impl salsa::Database for RootDatabase {
26 } 26 }
27} 27}
28 28
29impl Default for RootDatabase {
30 fn default() -> RootDatabase {
31 let mut db = RootDatabase {
32 runtime: Default::default(),
33 };
34 db.query_mut(crate::input::SourceRootQuery)
35 .set(crate::input::WORKSPACE, Default::default());
36 db.query_mut(crate::input::CrateGraphQuery)
37 .set((), Default::default());
38 db.query_mut(crate::input::LibrariesQuery)
39 .set((), Default::default());
40 db
41 }
42}
43
29pub(crate) fn check_canceled(db: &impl salsa::Database) -> Cancelable<()> { 44pub(crate) fn check_canceled(db: &impl salsa::Database) -> Cancelable<()> {
30 if db.salsa_runtime().is_current_revision_canceled() { 45 if db.salsa_runtime().is_current_revision_canceled() {
31 Err(Canceled) 46 Err(Canceled)
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs
index 77dd71dcf..4f337d163 100644
--- a/crates/ra_analysis/src/imp.rs
+++ b/crates/ra_analysis/src/imp.rs
@@ -86,22 +86,12 @@ impl Default for FileResolverImp {
86 } 86 }
87} 87}
88 88
89#[derive(Debug)] 89#[derive(Debug, Default)]
90pub(crate) struct AnalysisHostImpl { 90pub(crate) struct AnalysisHostImpl {
91 db: db::RootDatabase, 91 db: db::RootDatabase,
92} 92}
93 93
94impl AnalysisHostImpl { 94impl AnalysisHostImpl {
95 pub fn new() -> AnalysisHostImpl {
96 let mut db = db::RootDatabase::default();
97 db.query_mut(crate::input::SourceRootQuery)
98 .set(WORKSPACE, Default::default());
99 db.query_mut(crate::input::CrateGraphQuery)
100 .set((), Default::default());
101 db.query_mut(crate::input::LibrariesQuery)
102 .set((), Default::default());
103 AnalysisHostImpl { db }
104 }
105 pub fn analysis(&self) -> AnalysisImpl { 95 pub fn analysis(&self) -> AnalysisImpl {
106 AnalysisImpl { 96 AnalysisImpl {
107 db: self.db.snapshot(), 97 db: self.db.snapshot(),
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs
index 6565f69fb..4e4c65f08 100644
--- a/crates/ra_analysis/src/lib.rs
+++ b/crates/ra_analysis/src/lib.rs
@@ -99,17 +99,12 @@ impl AnalysisChange {
99} 99}
100 100
101/// `AnalysisHost` stores the current state of the world. 101/// `AnalysisHost` stores the current state of the world.
102#[derive(Debug)] 102#[derive(Debug, Default)]
103pub struct AnalysisHost { 103pub struct AnalysisHost {
104 imp: AnalysisHostImpl, 104 imp: AnalysisHostImpl,
105} 105}
106 106
107impl AnalysisHost { 107impl AnalysisHost {
108 pub fn new() -> AnalysisHost {
109 AnalysisHost {
110 imp: AnalysisHostImpl::new(),
111 }
112 }
113 /// Returns a snapshot of the current state, which you can query for 108 /// Returns a snapshot of the current state, which you can query for
114 /// semantic information. 109 /// semantic information.
115 pub fn analysis(&self) -> Analysis { 110 pub fn analysis(&self) -> Analysis {
diff --git a/crates/ra_analysis/src/mock_analysis.rs b/crates/ra_analysis/src/mock_analysis.rs
index 76100f548..a7134a0e6 100644
--- a/crates/ra_analysis/src/mock_analysis.rs
+++ b/crates/ra_analysis/src/mock_analysis.rs
@@ -82,7 +82,7 @@ impl MockAnalysis {
82 FileId(idx as u32 + 1) 82 FileId(idx as u32 + 1)
83 } 83 }
84 pub fn analysis_host(self) -> AnalysisHost { 84 pub fn analysis_host(self) -> AnalysisHost {
85 let mut host = AnalysisHost::new(); 85 let mut host = AnalysisHost::default();
86 let mut file_map = Vec::new(); 86 let mut file_map = Vec::new();
87 let mut change = AnalysisChange::new(); 87 let mut change = AnalysisChange::new();
88 for (id, (path, contents)) in self.files.into_iter().enumerate() { 88 for (id, (path, contents)) in self.files.into_iter().enumerate() {
diff --git a/crates/ra_lsp_server/src/main_loop/mod.rs b/crates/ra_lsp_server/src/main_loop/mod.rs
index c568706bd..1eb147539 100644
--- a/crates/ra_lsp_server/src/main_loop/mod.rs
+++ b/crates/ra_lsp_server/src/main_loop/mod.rs
@@ -61,7 +61,7 @@ pub fn main_loop(
61 let (ws_worker, ws_watcher) = workspace_loader(); 61 let (ws_worker, ws_watcher) = workspace_loader();
62 62
63 info!("server initialized, serving requests"); 63 info!("server initialized, serving requests");
64 let mut state = ServerWorldState::new(); 64 let mut state = ServerWorldState::default();
65 65
66 let mut pending_requests = FxHashSet::default(); 66 let mut pending_requests = FxHashSet::default();
67 let mut subs = Subscriptions::new(); 67 let mut subs = Subscriptions::new();
diff --git a/crates/ra_lsp_server/src/path_map.rs b/crates/ra_lsp_server/src/path_map.rs
index dd09fa10a..87eabf9be 100644
--- a/crates/ra_lsp_server/src/path_map.rs
+++ b/crates/ra_lsp_server/src/path_map.rs
@@ -28,9 +28,6 @@ impl fmt::Debug for PathMap {
28} 28}
29 29
30impl PathMap { 30impl PathMap {
31 pub fn new() -> PathMap {
32 Default::default()
33 }
34 pub fn get_or_insert(&mut self, path: PathBuf, root: Root) -> (bool, FileId) { 31 pub fn get_or_insert(&mut self, path: PathBuf, root: Root) -> (bool, FileId) {
35 let mut inserted = false; 32 let mut inserted = false;
36 let file_id = self 33 let file_id = self
@@ -117,7 +114,7 @@ mod test {
117 114
118 #[test] 115 #[test]
119 fn test_resolve() { 116 fn test_resolve() {
120 let mut m = PathMap::new(); 117 let mut m = PathMap::default();
121 let (_, id1) = m.get_or_insert(PathBuf::from("/foo"), Root::Workspace); 118 let (_, id1) = m.get_or_insert(PathBuf::from("/foo"), Root::Workspace);
122 let (_, id2) = m.get_or_insert(PathBuf::from("/foo/bar.rs"), Root::Workspace); 119 let (_, id2) = m.get_or_insert(PathBuf::from("/foo/bar.rs"), Root::Workspace);
123 assert_eq!(m.resolve(id1, &RelativePath::new("bar.rs")), Some(id2),) 120 assert_eq!(m.resolve(id1, &RelativePath::new("bar.rs")), Some(id2),)
diff --git a/crates/ra_lsp_server/src/server_world.rs b/crates/ra_lsp_server/src/server_world.rs
index 3e76d2527..3e7670fcc 100644
--- a/crates/ra_lsp_server/src/server_world.rs
+++ b/crates/ra_lsp_server/src/server_world.rs
@@ -17,7 +17,7 @@ use crate::{
17 Result, 17 Result,
18}; 18};
19 19
20#[derive(Debug)] 20#[derive(Debug, Default)]
21pub struct ServerWorldState { 21pub struct ServerWorldState {
22 pub workspaces: Arc<Vec<CargoWorkspace>>, 22 pub workspaces: Arc<Vec<CargoWorkspace>>,
23 pub analysis_host: AnalysisHost, 23 pub analysis_host: AnalysisHost,
@@ -32,14 +32,6 @@ pub struct ServerWorld {
32} 32}
33 33
34impl ServerWorldState { 34impl ServerWorldState {
35 pub fn new() -> ServerWorldState {
36 ServerWorldState {
37 workspaces: Arc::new(Vec::new()),
38 analysis_host: AnalysisHost::new(),
39 path_map: PathMap::new(),
40 mem_map: FxHashMap::default(),
41 }
42 }
43 pub fn apply_fs_changes(&mut self, events: Vec<FileEvent>) { 35 pub fn apply_fs_changes(&mut self, events: Vec<FileEvent>) {
44 let mut change = AnalysisChange::new(); 36 let mut change = AnalysisChange::new();
45 let mut inserted = false; 37 let mut inserted = false;