aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/test_db.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-03-13 15:05:46 +0000
committerAleksey Kladov <[email protected]>2020-03-16 16:42:30 +0000
commit9faea2364dee4fbc9391ad233c570b70256ef002 (patch)
tree160af959553ce57fdfcbc0a6c79bafcc3611aeea /crates/ra_hir_ty/src/test_db.rs
parent648df02953a6ebf87a5876668eceba208687e8a7 (diff)
Use `dyn Trait` for working with databse
It improves compile time in `--release` mode quite a bit, it doesn't really slow things down and, conceptually, it seems closer to what we want the physical architecture to look like (we don't want to monomorphise EVERYTHING in a single leaf crate).
Diffstat (limited to 'crates/ra_hir_ty/src/test_db.rs')
-rw-r--r--crates/ra_hir_ty/src/test_db.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/test_db.rs b/crates/ra_hir_ty/src/test_db.rs
index 0be2fea4b..5bbeabf51 100644
--- a/crates/ra_hir_ty/src/test_db.rs
+++ b/crates/ra_hir_ty/src/test_db.rs
@@ -6,8 +6,10 @@ use std::{
6}; 6};
7 7
8use hir_def::{db::DefDatabase, AssocItemId, ModuleDefId, ModuleId}; 8use hir_def::{db::DefDatabase, AssocItemId, ModuleDefId, ModuleId};
9use hir_expand::diagnostics::DiagnosticSink; 9use hir_expand::{db::AstDatabase, diagnostics::DiagnosticSink};
10use ra_db::{salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath, SourceDatabase}; 10use ra_db::{
11 salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath, SourceDatabase, Upcast,
12};
11 13
12use crate::{db::HirDatabase, expr::ExprValidator}; 14use crate::{db::HirDatabase, expr::ExprValidator};
13 15
@@ -25,6 +27,18 @@ pub struct TestDB {
25 runtime: salsa::Runtime<TestDB>, 27 runtime: salsa::Runtime<TestDB>,
26} 28}
27 29
30impl Upcast<dyn AstDatabase> for TestDB {
31 fn upcast(&self) -> &(dyn AstDatabase + 'static) {
32 &*self
33 }
34}
35
36impl Upcast<dyn DefDatabase> for TestDB {
37 fn upcast(&self) -> &(dyn DefDatabase + 'static) {
38 &*self
39 }
40}
41
28impl salsa::Database for TestDB { 42impl salsa::Database for TestDB {
29 fn salsa_runtime(&self) -> &salsa::Runtime<TestDB> { 43 fn salsa_runtime(&self) -> &salsa::Runtime<TestDB> {
30 &self.runtime 44 &self.runtime