name: djls-salsa description: Use when editing Salsa inputs, tracked functions, database traits, setters, SemanticDb, crate::Db, invalidation behavior, or incremental computation in django-language-server. Handles project-specific Salsa conventions and required impl updates.
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'