//! Test that transparent (uncached) queries work | |
#[salsa::query_group(QueryGroupStorage)] | |
trait QueryGroup { | |
#[salsa::input] | |
fn input(&self, x: u32) -> u32; | |
#[salsa::transparent] | |
fn wrap(&self, x: u32) -> u32; | |
fn get(&self, x: u32) -> u32; | |
} | |
fn wrap(db: &dyn QueryGroup, x: u32) -> u32 { | |
db.input(x) | |
} | |
fn get(db: &dyn QueryGroup, x: u32) -> u32 { | |
db.wrap(x) | |
} | |
#[salsa::database(QueryGroupStorage)] | |
#[derive(Default)] | |
struct Database { | |
storage: salsa::Storage<Self>, | |
} | |
impl salsa::Database for Database {} | |
#[test] | |
fn transparent_queries_work() { | |
let mut db = Database::default(); | |
db.set_input(1, 10); | |
assert_eq!(db.get(1), 10); | |
assert_eq!(db.get(1), 10); | |
db.set_input(1, 92); | |
assert_eq!(db.get(1), 92); | |
assert_eq!(db.get(1), 92); | |
} |