Compare the C parser's AST against Zig's std.zig.Ast.parse() output in
every testParse call. This catches structural mismatches (tokens, nodes,
extra_data) without needing a separate corpus.
Also fix two C parser bugs found by the new check:
- Empty anonymous init `.{}` now uses struct_init_dot_two (not
array_init_dot_two), matching the Zig parser.
- for-type-expr with single input and no else now emits for_simple
(not for with extra_data), matching the Zig parser's parseFor.
Skip the check under valgrind since Zig's tokenizer uses AVX-512.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
171 KiB
171 KiB