Skip to content

Commit 8686c47

Browse files
committed
Add regression test for #455
1 parent 9107eeb commit 8686c47

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tests/regression_455.rs

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
use salsa::{Database, Setter};
2+
3+
#[salsa::tracked]
4+
fn memoized(db: &dyn Database, input: MyInput) -> u32 {
5+
memoized_a(db, MyTracked::new(db, input.field(db)))
6+
}
7+
8+
#[salsa::tracked]
9+
fn memoized_a<'db>(db: &'db dyn Database, tracked: MyTracked<'db>) -> u32 {
10+
MyTracked::new(db, 0);
11+
memoized_b(db, tracked)
12+
}
13+
14+
fn recovery_fn<'db>(_db: &'db dyn Database, _cycle: &salsa::Cycle, _input: MyTracked<'db>) -> u32 {
15+
0
16+
}
17+
18+
#[salsa::tracked(recovery_fn=recovery_fn)]
19+
fn memoized_b<'db>(db: &'db dyn Database, tracked: MyTracked<'db>) -> u32 {
20+
tracked.field(db) + memoized_a(db, tracked)
21+
}
22+
23+
#[salsa::input]
24+
struct MyInput {
25+
field: u32,
26+
}
27+
28+
#[salsa::tracked]
29+
struct MyTracked<'db> {
30+
field: u32,
31+
}
32+
33+
#[test]
34+
fn cycle_memoized() {
35+
let mut db = salsa::DatabaseImpl::new();
36+
let input = MyInput::new(&db, 2);
37+
memoized(&db, input);
38+
input.set_field(&mut db).to(3);
39+
memoized(&db, input);
40+
}

0 commit comments

Comments
 (0)