diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index 3a0aa7d246..4bfc3f9ae9 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs @@ -20,7 +20,7 @@ pub use crate::{ loc2id::LocationIntener, }; -pub trait BaseDatabase: salsa::Database + panic::RefUnwindSafe { +pub trait CheckCanceled: salsa::Database + panic::RefUnwindSafe { /// Aborts current query if there are pending changes. /// /// rust-analyzer needs to be able to answer semantic questions about the @@ -64,10 +64,12 @@ pub struct FileRange { } #[salsa::query_group(FilesDatabaseStorage)] -pub trait FilesDatabase: salsa::Database { +pub trait FilesDatabase: salsa::Database + CheckCanceled { /// Text of the file. #[salsa::input] fn file_text(&self, file_id: FileId) -> Arc; + // Parses the file into the syntax tree. + fn source_file(&self, file_id: FileId) -> TreeArc; /// Path to a file, relative to the root of its source root. #[salsa::input] fn file_relative_path(&self, file_id: FileId) -> RelativePathBuf; @@ -102,12 +104,7 @@ fn source_root_crates(db: &impl FilesDatabase, id: SourceRootId) -> Arc TreeArc; -} - -fn source_file(db: &impl SyntaxDatabase, file_id: FileId) -> TreeArc { +fn source_file(db: &impl FilesDatabase, file_id: FileId) -> TreeArc { let text = db.file_text(file_id); SourceFile::parse(&*text) } diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index dfbf41bd66..1bb9e03056 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use ra_syntax::{SyntaxNode, TreeArc, SourceFile}; -use ra_db::{SyntaxDatabase, CrateId, salsa}; +use ra_db::{FilesDatabase, CrateId, salsa}; use crate::{ MacroCallId, HirFileId, @@ -19,7 +19,7 @@ use crate::{ }; #[salsa::query_group(HirDatabaseStorage)] -pub trait HirDatabase: SyntaxDatabase + AsRef { +pub trait HirDatabase: FilesDatabase + AsRef { #[salsa::invoke(HirFileId::hir_source_file)] fn hir_source_file(&self, file_id: HirFileId) -> TreeArc; diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs index 2dc252b1ee..4af4dd096e 100644 --- a/crates/ra_hir/src/mock.rs +++ b/crates/ra_hir/src/mock.rs @@ -2,7 +2,7 @@ use std::{sync::Arc, panic}; use parking_lot::Mutex; use ra_db::{ - BaseDatabase, FilePosition, FileId, CrateGraph, SourceRoot, SourceRootId, FilesDatabase, salsa, + CheckCanceled, FilePosition, FileId, CrateGraph, SourceRoot, SourceRootId, FilesDatabase, salsa, }; use relative_path::RelativePathBuf; use test_utils::{parse_fixture, CURSOR_MARKER, extract_offset}; @@ -11,11 +11,7 @@ use crate::{db, HirInterner}; pub const WORKSPACE: SourceRootId = SourceRootId(0); -#[salsa::database( - ra_db::FilesDatabaseStorage, - ra_db::SyntaxDatabaseStorage, - db::HirDatabaseStorage -)] +#[salsa::database(ra_db::FilesDatabaseStorage, db::HirDatabaseStorage)] #[derive(Debug)] pub(crate) struct MockDatabase { events: Mutex>>>, @@ -161,7 +157,7 @@ impl salsa::ParallelDatabase for MockDatabase { } } -impl BaseDatabase for MockDatabase {} +impl CheckCanceled for MockDatabase {} impl AsRef for MockDatabase { fn as_ref(&self) -> &HirInterner { diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index 389bdaf237..a56783b6e6 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use std::fmt::Write; -use ra_db::{SyntaxDatabase, salsa::Database}; +use ra_db::{FilesDatabase, salsa::Database}; use ra_syntax::ast::{self, AstNode}; use crate::{ diff --git a/crates/ra_ide_api/src/call_info.rs b/crates/ra_ide_api/src/call_info.rs index 0449c1902a..0eb70df162 100644 --- a/crates/ra_ide_api/src/call_info.rs +++ b/crates/ra_ide_api/src/call_info.rs @@ -1,4 +1,4 @@ -use ra_db::SyntaxDatabase; +use ra_db::FilesDatabase; use ra_syntax::{ AstNode, SyntaxNode, TextUnit, TextRange, SyntaxKind::FN_DEF, diff --git a/crates/ra_ide_api/src/completion.rs b/crates/ra_ide_api/src/completion.rs index 565d57c372..581ba5de81 100644 --- a/crates/ra_ide_api/src/completion.rs +++ b/crates/ra_ide_api/src/completion.rs @@ -9,7 +9,7 @@ mod complete_path; mod complete_scope; mod complete_postfix; -use ra_db::SyntaxDatabase; +use ra_db::FilesDatabase; use crate::{ db, diff --git a/crates/ra_ide_api/src/db.rs b/crates/ra_ide_api/src/db.rs index 30891aed49..02e12437c3 100644 --- a/crates/ra_ide_api/src/db.rs +++ b/crates/ra_ide_api/src/db.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use ra_db::{ - BaseDatabase, FileId, Canceled, + CheckCanceled, FileId, Canceled, salsa::{self, Database}, }; @@ -9,7 +9,6 @@ use crate::{symbol_index, LineIndex}; #[salsa::database( ra_db::FilesDatabaseStorage, - ra_db::SyntaxDatabaseStorage, LineIndexDatabaseStorage, symbol_index::SymbolsDatabaseStorage, hir::db::HirDatabaseStorage @@ -54,7 +53,7 @@ impl salsa::ParallelDatabase for RootDatabase { } } -impl BaseDatabase for RootDatabase {} +impl CheckCanceled for RootDatabase {} impl AsRef for RootDatabase { fn as_ref(&self) -> &hir::HirInterner { @@ -63,7 +62,7 @@ impl AsRef for RootDatabase { } #[salsa::query_group(LineIndexDatabaseStorage)] -pub(crate) trait LineIndexDatabase: ra_db::FilesDatabase + BaseDatabase { +pub(crate) trait LineIndexDatabase: ra_db::FilesDatabase + CheckCanceled { fn line_index(&self, file_id: FileId) -> Arc; } diff --git a/crates/ra_ide_api/src/extend_selection.rs b/crates/ra_ide_api/src/extend_selection.rs index 718b4def55..bc19b0b9d9 100644 --- a/crates/ra_ide_api/src/extend_selection.rs +++ b/crates/ra_ide_api/src/extend_selection.rs @@ -1,4 +1,4 @@ -use ra_db::SyntaxDatabase; +use ra_db::FilesDatabase; use ra_syntax::{ SyntaxNode, AstNode, SourceFile, ast, algo::find_covering_node, diff --git a/crates/ra_ide_api/src/goto_definition.rs b/crates/ra_ide_api/src/goto_definition.rs index dc0c50918e..0e40e35cef 100644 --- a/crates/ra_ide_api/src/goto_definition.rs +++ b/crates/ra_ide_api/src/goto_definition.rs @@ -1,4 +1,4 @@ -use ra_db::{FileId, SyntaxDatabase}; +use ra_db::{FileId, FilesDatabase}; use ra_syntax::{ AstNode, ast, algo::find_node_at_offset, diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs index 4d4bfbc4da..04f5a746e7 100644 --- a/crates/ra_ide_api/src/hover.rs +++ b/crates/ra_ide_api/src/hover.rs @@ -1,4 +1,4 @@ -use ra_db::{SyntaxDatabase}; +use ra_db::FilesDatabase; use ra_syntax::{ AstNode, SyntaxNode, TreeArc, ast, algo::{find_covering_node, find_node_at_offset, find_leaf_at_offset, visit::{visitor, Visitor}}, diff --git a/crates/ra_ide_api/src/imp.rs b/crates/ra_ide_api/src/imp.rs index bd9e3f1e3c..f2d41321dc 100644 --- a/crates/ra_ide_api/src/imp.rs +++ b/crates/ra_ide_api/src/imp.rs @@ -4,7 +4,7 @@ use hir::{ self, Problem, source_binder }; use ra_db::{ - FilesDatabase, SourceRoot, SourceRootId, SyntaxDatabase, + FilesDatabase, SourceRoot, SourceRootId, salsa::{Database, SweepStrategy}, }; use ra_ide_api_light::{self, assists, LocalEdit, Severity}; diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs index ffd026b045..8380aa6c29 100644 --- a/crates/ra_ide_api/src/lib.rs +++ b/crates/ra_ide_api/src/lib.rs @@ -34,7 +34,7 @@ use std::{fmt, sync::Arc}; use ra_syntax::{SourceFile, TreeArc, TextRange, TextUnit}; use ra_text_edit::TextEdit; use ra_db::{ - SyntaxDatabase, FilesDatabase, BaseDatabase, + FilesDatabase, CheckCanceled, salsa::{self, ParallelDatabase}, }; use rayon::prelude::*; diff --git a/crates/ra_ide_api/src/rename.rs b/crates/ra_ide_api/src/rename.rs index 5b767addd3..fe81609df9 100644 --- a/crates/ra_ide_api/src/rename.rs +++ b/crates/ra_ide_api/src/rename.rs @@ -17,7 +17,7 @@ use crate::{ SourceChange, SourceFileEdit, }; -use ra_db::{FilesDatabase, SyntaxDatabase}; +use ra_db::FilesDatabase; use relative_path::RelativePath; pub(crate) fn rename( diff --git a/crates/ra_ide_api/src/runnables.rs b/crates/ra_ide_api/src/runnables.rs index 0f9f8deb32..e21724207a 100644 --- a/crates/ra_ide_api/src/runnables.rs +++ b/crates/ra_ide_api/src/runnables.rs @@ -3,7 +3,7 @@ use ra_syntax::{ TextRange, SyntaxNode, ast::{self, AstNode, NameOwner, ModuleItemOwner}, }; -use ra_db::SyntaxDatabase; +use ra_db::FilesDatabase; use crate::{db::RootDatabase, FileId}; diff --git a/crates/ra_ide_api/src/syntax_highlighting.rs b/crates/ra_ide_api/src/syntax_highlighting.rs index a4d3ad0058..cfa0257dd2 100644 --- a/crates/ra_ide_api/src/syntax_highlighting.rs +++ b/crates/ra_ide_api/src/syntax_highlighting.rs @@ -1,5 +1,5 @@ use ra_syntax::{ast, AstNode,}; -use ra_db::SyntaxDatabase; +use ra_db::FilesDatabase; use crate::{ FileId, HighlightedRange,