DJLS Salsa
Use this before changing Salsa inputs, tracked functions, database traits, or query plumbing.
Setter and invalidation rules
- Setter API is
project.set_field(db).to(value), not.set_field(db, value). - Compare before setting because setters always invalidate.
- Use
#[returns(ref)]on fields returning owned types. - Salsa returns
&Tfor#[returns(ref)], so compare with&new_value. - Tracked return types need
PartialEqfor backdate optimization.
Required updates
- When adding
SemanticDbmethods, update impls in:djls-db/src/db.rsdjls-bench/src/db.rs
- When adding
crate::Dbmethods indjls-semantic, update all test database impls. Missing impls produce E0046.
Checks
Search with rg, not grep:
rg "impl crate::Db" crates/djls-semantic/ -g '*.rs'
rg "trait SemanticDb|impl SemanticDb" crates/ -g '*.rs'