diff options
author | Aleksey Kladov <[email protected]> | 2020-03-13 15:05:46 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-03-16 16:42:30 +0000 |
commit | 9faea2364dee4fbc9391ad233c570b70256ef002 (patch) | |
tree | 160af959553ce57fdfcbc0a6c79bafcc3611aeea /crates/ra_hir_ty/src/test_db.rs | |
parent | 648df02953a6ebf87a5876668eceba208687e8a7 (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.rs | 18 |
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 | ||
8 | use hir_def::{db::DefDatabase, AssocItemId, ModuleDefId, ModuleId}; | 8 | use hir_def::{db::DefDatabase, AssocItemId, ModuleDefId, ModuleId}; |
9 | use hir_expand::diagnostics::DiagnosticSink; | 9 | use hir_expand::{db::AstDatabase, diagnostics::DiagnosticSink}; |
10 | use ra_db::{salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath, SourceDatabase}; | 10 | use ra_db::{ |
11 | salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath, SourceDatabase, Upcast, | ||
12 | }; | ||
11 | 13 | ||
12 | use crate::{db::HirDatabase, expr::ExprValidator}; | 14 | use 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 | ||
30 | impl Upcast<dyn AstDatabase> for TestDB { | ||
31 | fn upcast(&self) -> &(dyn AstDatabase + 'static) { | ||
32 | &*self | ||
33 | } | ||
34 | } | ||
35 | |||
36 | impl Upcast<dyn DefDatabase> for TestDB { | ||
37 | fn upcast(&self) -> &(dyn DefDatabase + 'static) { | ||
38 | &*self | ||
39 | } | ||
40 | } | ||
41 | |||
28 | impl salsa::Database for TestDB { | 42 | impl 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 |