aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/db.rs')
-rw-r--r--crates/ra_analysis/src/db.rs19
1 files changed, 17 insertions, 2 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)