Djls Salsa

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.

joshuadavidthomas dfc34d2 1.1 KB Updated

File contents

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 &T for #[returns(ref)], so compare with &new_value.
  • Tracked return types need PartialEq for backdate optimization.

Required updates

  • When adding SemanticDb methods, update impls in:
    • djls-db/src/db.rs
    • djls-bench/src/db.rs
  • When adding crate::Db methods in djls-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'

joshuadavidthomas/django-language-server/tree/main/.agents/skills/djls-salsa commit dfc34d29f4

Frequently asked questions

npx skillmds@latest add joshuadavidthomas/djls-salsa