| 1 | --- |
| 2 | name: compiler-verify |
| 3 | description: Use when you need to run all compiler checks (tests, lint, format) before committing. Detects whether TS or Rust code changed and runs the appropriate checks. |
| 4 | --- |
| 5 | |
| 6 | # Compiler Verify |
| 7 | |
| 8 | Run all verification steps for compiler changes. |
| 9 | |
| 10 | Arguments: |
| 11 | - $ARGUMENTS: Optional test pattern for `yarn snap -p <pattern>` |
| 12 | |
| 13 | ## Instructions |
| 14 | |
| 15 | 1. **Detect what changed** by running `git diff --name-only HEAD` (or vs the base branch). |
| 16 | Categorize changes: |
| 17 | - **TS changes**: files in `compiler/packages/` |
| 18 | - **Rust changes**: files in `compiler/crates/` |
| 19 | - **Both**: run all checks |
| 20 | |
| 21 | 2. **If TS changed**, run these sequentially (stop on failure): |
| 22 | - `yarn snap` (or `yarn snap -p <pattern>` if a pattern was provided) — compiler tests |
| 23 | - `yarn test` — test full compiler |
| 24 | - `yarn workspace babel-plugin-react-compiler lint` — lint compiler source |
| 25 | |
| 26 | 3. **If Rust changed**, run these sequentially (stop on failure): |
| 27 | - `bash compiler/scripts/test-babel-ast.sh` — Babel AST round-trip tests |
| 28 | - `bash compiler/scripts/test-rust-port.sh` — full Rust port test suite (compares Rust vs TS compiler output across all passes; must have 0 failures — do not regress) |
| 29 | - `yarn snap --rust` — end-to-end snap tests using the Rust compiler (compares compiled output and logger events against `.expect.md` fixtures; use `yarn snap --rust -p <pattern>` for focused checks) |
| 30 | |
| 31 | 4. **Always run** (from the repo root): |
| 32 | - `yarn prettier-all` — format all changed files |
| 33 | |
| 34 | 5. **If implementing a plan doc**, check: |
| 35 | - Plan doc has no unaddressed "Remaining Work" items |
| 36 | - Plan doc status is updated to reflect current state |
| 37 | |
| 38 | 6. Report results: list each step as passed/failed. On failure, stop and show the error with suggested fixes. |
| 39 | |
| 40 | ## Common Mistakes |
| 41 | |
| 42 | - **Running `yarn snap` without `-p`** is fine for full verification, but slow. Use `-p` for focused checks. |
| 43 | - **Running prettier from compiler/** — must run from the repo root. |
| 44 | - **Forgetting Rust tests** — if you touched `.rs` files, always run the round-trip test and `yarn snap --rust`. |