This commit is contained in:
Niko Matsakis 2024-07-17 08:45:49 -04:00
parent 2213729c4e
commit 8f8528a205
3 changed files with 30 additions and 33 deletions

View file

@ -51,9 +51,9 @@ impl crate::options::AllowedOptions for TrackedStruct {
}
impl SalsaStructAllowedOptions for TrackedStruct {
const KIND: &'static str = "interned";
const KIND: &'static str = "tracked";
const ALLOW_ID: bool = false;
const ALLOW_ID: bool = true;
const HAS_LIFETIME: bool = true;
}

View file

@ -1,12 +1,8 @@
//! Test an id field whose `PartialEq` impl is always true.
use salsa::{Database as Db, Setter};
use test_log::test;
#[salsa::jar(db = Db)]
struct Jar(MyInput, MyTracked<'_>, the_fn);
trait Db: salsa::DbWithJar<Jar> {}
#[salsa::input]
struct MyInput {
field: bool,
@ -42,16 +38,15 @@ fn the_fn(db: &dyn Db, input: MyInput) {
assert_eq!(tracked0.field(db).field, input.field(db));
}
#[salsa::db(Jar)]
#[salsa::db]
#[derive(Default)]
struct Database {
storage: salsa::Storage<Self>,
}
#[salsa::db]
impl salsa::Database for Database {}
impl Db for Database {}
#[test]
fn execute() {
let mut db = Database::default();

View file

@ -1,6 +1,7 @@
//! Test that a setting a field on a `#[salsa::input]`
//! overwrites and returns the old value.
use salsa::Database as _;
use test_log::test;
#[salsa::db]
@ -38,29 +39,30 @@ fn create_tracked_list<'db>(db: &'db dyn salsa::Database, input: MyInput) -> MyT
#[test]
fn execute() {
let mut db = Database::default();
let input = MyInput::new(&mut db, "foo".to_string());
let t0: MyTracked = create_tracked_list(&db, input);
let t1 = create_tracked_list(&db, input);
expect_test::expect![[r#"
MyTracked {
[salsa id]: 1,
data: MyInput {
[salsa id]: 0,
field: "foo",
},
next: Next(
MyTracked {
Database::default().attach(|db| {
let input = MyInput::new(db, "foo".to_string());
let t0: MyTracked = create_tracked_list(db, input);
let t1 = create_tracked_list(db, input);
expect_test::expect![[r#"
MyTracked {
[salsa id]: 1,
data: MyInput {
[salsa id]: 0,
data: MyInput {
[salsa id]: 0,
field: "foo",
},
next: None,
field: "foo",
},
),
}
"#]]
.assert_debug_eq(&t0);
assert_eq!(t0, t1);
next: Next(
MyTracked {
[salsa id]: 0,
data: MyInput {
[salsa id]: 0,
field: "foo",
},
next: None,
},
),
}
"#]]
.assert_debug_eq(&t0);
assert_eq!(t0, t1);
})
}