introduce Database::salsa_runtime_mut method (breaking change!)

This commit is contained in:
Niko Matsakis 2019-09-27 05:49:15 -04:00
parent c789219bc5
commit b9f00726da
19 changed files with 100 additions and 17 deletions

View file

@ -27,9 +27,13 @@ pub struct DatabaseImpl {
/// This impl tells salsa where to find the salsa runtime.
impl salsa::Database for DatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
/// In addition to the "query provider" traits, you may have other

View file

@ -79,9 +79,13 @@ struct DatabaseStruct {
// Tell salsa where to find the runtime in your context.
impl salsa::Database for DatabaseStruct {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseStruct> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
// This shows how to use a query.

View file

@ -27,9 +27,13 @@
/// }
///
/// impl salsa::Database for DatabaseImpl {
/// fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
/// fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
/// &self.runtime
/// }
///
/// fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
/// &mut self.runtime
/// }
/// }
///
/// fn is_send<T: Send>(_: T) { }
@ -68,9 +72,13 @@ fn test_key_not_send_db_not_send() {}
/// }
///
/// impl salsa::Database for DatabaseImpl {
/// fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
/// fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
/// &self.runtime
/// }
///
/// fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
/// &mut self.runtime
/// }
/// }
///
/// fn is_send<T: Send>(_: T) { }
@ -108,9 +116,13 @@ fn test_key_not_sync_db_not_send() {}
/// }
///
/// impl salsa::Database for DatabaseImpl {
/// fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
/// fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
/// &self.runtime
/// }
///
/// fn salsa_runtime(&mut self) -> &mut salsa::Runtime<Self> {
/// &mut self.runtime
/// }
/// }
///
/// fn is_sync<T: Sync>(_: T) { }

View file

@ -48,6 +48,9 @@ pub trait Database: plumbing::DatabaseStorageTypes + plumbing::DatabaseOps {
/// Gives access to the underlying salsa runtime.
fn salsa_runtime(&self) -> &Runtime<Self>;
/// Gives access to the underlying salsa runtime.
fn salsa_runtime_mut(&mut self) -> &mut Runtime<Self>;
/// Iterates through all query storage and removes any values that
/// have not been used since the last revision was created. The
/// intended use-cycle is that you first execute all of your

View file

@ -12,9 +12,13 @@ struct DatabaseImpl {
}
impl salsa::Database for DatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
impl ParallelDatabase for DatabaseImpl {

View file

@ -7,9 +7,13 @@ struct DynTraitDatabase {
}
impl salsa::Database for DynTraitDatabase {
fn salsa_runtime(&self) -> &salsa::Runtime<DynTraitDatabase> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[salsa::query_group(DynTraitStorage)]

View file

@ -14,6 +14,10 @@ impl salsa::Database for DatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<DatabaseImpl> {
&mut self.runtime
}
}
impl DatabaseImpl {

View file

@ -55,7 +55,11 @@ impl TestContext for TestContextImpl {
}
impl salsa::Database for TestContextImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<TestContextImpl> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}

View file

@ -9,9 +9,13 @@ struct Database {
}
impl salsa::Database for Database {
fn salsa_runtime(&self) -> &salsa::Runtime<Database> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
impl salsa::ParallelDatabase for Database {

View file

@ -47,9 +47,13 @@ struct Database {
}
impl salsa::Database for Database {
fn salsa_runtime(&self) -> &salsa::Runtime<Database> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[test]

View file

@ -23,9 +23,13 @@ struct DatabaseImpl {
}
impl salsa::Database for DatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[test]

View file

@ -43,10 +43,14 @@ struct Database {
}
impl salsa::Database for Database {
fn salsa_runtime(&self) -> &salsa::Runtime<Database> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
fn salsa_event(&self, event_fn: impl Fn() -> salsa::Event<Self>) {
if let Some(cb) = &self.on_event {
cb(event_fn())

View file

@ -30,9 +30,13 @@ struct DatabaseStruct {
}
impl salsa::Database for DatabaseStruct {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseStruct> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
impl salsa::ParallelDatabase for DatabaseStruct {

View file

@ -192,10 +192,14 @@ pub(crate) struct ParDatabaseImpl {
}
impl Database for ParDatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<ParDatabaseImpl> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
fn salsa_event(&self, event_fn: impl Fn() -> salsa::Event<Self>) {
let event = event_fn();
match event.kind {

View file

@ -45,6 +45,10 @@ impl salsa::Database for StressDatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<StressDatabaseImpl> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<StressDatabaseImpl> {
&mut self.runtime
}
}
impl salsa::ParallelDatabase for StressDatabaseImpl {

View file

@ -50,9 +50,13 @@ struct Database {
}
impl salsa::Database for Database {
fn salsa_runtime(&self) -> &salsa::Runtime<Database> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[test]

View file

@ -20,4 +20,8 @@ impl salsa::Database for DatabaseImpl {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseImpl> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<DatabaseImpl> {
&mut self.runtime
}
}

View file

@ -24,9 +24,13 @@ struct Database {
}
impl salsa::Database for Database {
fn salsa_runtime(&self) -> &salsa::Runtime<Database> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[test]

View file

@ -35,9 +35,13 @@ struct DatabaseStruct {
}
impl salsa::Database for DatabaseStruct {
fn salsa_runtime(&self) -> &salsa::Runtime<DatabaseStruct> {
fn salsa_runtime(&self) -> &salsa::Runtime<Self> {
&self.runtime
}
fn salsa_runtime_mut(&mut self) -> &mut salsa::Runtime<Self> {
&mut self.runtime
}
}
#[test]