906c2712846b7b504bed95372ab72e9c0a0f8383
Port WipMembers, field processing loop, nodeImpliesMoreThanOnePossibleValue, and nodeImpliesComptimeOnly from upstream AstGen.zig. Struct fields are now properly emitted with type expressions, default values, alignment, and comptime annotations. Also fix structDeclInner to add the reserved instruction to the GenZir body (matching upstream gz.reserveInstructionIndex behavior) and use AST_NODE_OFFSET_NONE for break_inline src_node in field bodies. Tests added: single field, multiple fields, field with default, field with alignment, comptime field. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
About
zig0 aspires to be an interpreter of zig 0.15.1 written in C.
This is written with help from LLM:
- Lexer:
- Datastructures 100% human.
- Helper functions 100% human.
- Lexing functions 50/50 human/bot.
- Parser:
- Datastructures 100% human.
- Helper functions 50/50.
- Parser functions 5/95 human/bot.
- AstGen: TBD.
Testing
Quick test:
zig build fmt test
Full test and static analysis with all supported compilers and valgrind (run before commit, takes a while):
zig build -Dvalgrind
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%