You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Reminder: All AI usage must be disclosed in commit messages, see
2
+
CONTRIBUTING.md for more details.**
3
+
4
+
## Build Commands
5
+
6
+
```bash
7
+
cargo build # Build all crates
8
+
cargo test# Run all tests
9
+
cargo test -p <crate># Run tests for a specific crate (e.g., cargo test -p hir-ty)
10
+
cargo lint # Run clippy on all targets
11
+
cargo xtask codegen # Run code generation
12
+
cargo xtask tidy # Run tidy checks
13
+
UPDATE_EXPECT=1 cargo test# Update test expectations (snapshot tests)
14
+
RUN_SLOW_TESTS=1 cargo test# Run heavy/slow tests
15
+
```
16
+
17
+
## Key Architectural Invariants
18
+
19
+
- Typing in a function body never invalidates global derived data
20
+
- Parser/syntax tree is built per-file to enable parallel parsing
21
+
- The server is stateless (HTTP-like); context must be re-created from request parameters
22
+
- Cancellation uses salsa's cancellation mechanism; computations panic with a `Cancelled` payload
23
+
24
+
### Code Generation
25
+
26
+
Generated code is committed to the repo. Grammar and AST are generated from `ungrammar`. Run `cargo test -p xtask` after adding inline parser tests (`// test test_name` comments).
27
+
28
+
## Testing
29
+
30
+
Tests are snapshot-based using `expect-test`. Test fixtures use a mini-language:
31
+
-`$0` marks cursor position
32
+
-`// ^^^^` labels attach to the line above
33
+
-`//- minicore: sized, fn` includes parts of minicore (minimal core library)
0 commit comments