fdefdc98c2dd66ad170cdb5442a752902b6bb50b
Sync parser_test.zig test section with upstream, adding ~40 new tests (testError, testCanonical, testTransform). Remove extra blank lines between tests to match upstream formatting. Fix tokenizer keyword lookup bug: getKeyword() returned TOKEN_INVALID when input was longer than a keyword prefix (e.g., "orelse" matched "or" prefix then bailed out instead of continuing to find "orelse"). Fix parser to handle if/for/while expressions in type position (e.g., function return types like `fn foo() if (cond) i32 else void`). Add labeled block support in parsePrimaryTypeExpr. Replace assert for chained comparison operators with longjmp error. 365/381 tests pass. Remaining 16 failures are parser limitations for specific syntax patterns and error recovery. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
zig0 aspires to be an interpreter of zig 0.15.1 written in C.
Testing
Quick test:
zig build fmt && zig build
Debugging tips
Test runs infinitely? Build the test program executable:
$ zig build test -Dno-exec
And then run it, capturing the stack trace:
gdb -batch
-ex "python import threading; threading.Timer(1.0, lambda: gdb.post_event(lambda: gdb.execute('interrupt'))).start()"
-ex run
-ex "bt full"
-ex quit
zig-out/bin/test
You are welcome to replace -ex "bt full" with anything other of interest.
Languages
Zig
96.3%
C
2.7%
C++
0.6%
Python
0.1%