mirror of
https://github.com/imjasonh/nescript
synced 2026-07-09 17:28:00 +00:00
Issues found by systematic review of all compiler modules. Each fix includes a regression test. Parser fixes: - Add EOF checks to function call arg parsing loops (lines 984, 1269) to prevent infinite loops on unterminated call expressions - Fix span end positions: use .end instead of .start for 9 declaration span computations (var, const, fun, state, bank, sprite, palette, background, block) - Add missing compound assignment operators (&= |= ^=) to parse_assign_op() for array element assignments Codegen fix: - Fix NOT operator: old code used EOR #$FF + AND #$01 which produced wrong results for non-boolean inputs (e.g., NOT 0x42 returned 1 instead of 0). New code uses BEQ/branch to properly map any nonzero value to 0 and zero to 1. Assembler fixes: - Add branch offset range validation: assert offset is in -128..127 range instead of silently wrapping on overflow - Panic on unresolved labels instead of silently leaving placeholder 0x00 bytes in the output Verified non-issues (reviewer false positives): - NMI P register: 6502 hardware pushes P automatically on NMI entry; RTI restores it. PHP/PLP not needed. - Controller read buffer: 8 iterations of LSR+ROL fully replace all 8 bits, so prior contents don't matter. - advance() panic: tokens always has at least Eof from lexer. 4 new regression tests, 225 total. https://claude.ai/code/session_01W6eQFStA66EuMKHUFo2rx3 |
||
|---|---|---|
| .. | ||
| mod.rs | ||
| opcodes.rs | ||
| tests.rs | ||