4972ab4a5cc750ddca198ff45d31cd94aa795da3
Phase 0 #9. cgen struct fields loopendbuf/loopcontbuf/yieldbuf/ deferbuf change from `*str`/`**node` over-allocated arena chunks to `[]str`/`[]*node` slices. The 4 alloc sites in cgeninit drop the byte-count form (`LOOP_MAX*24u64`, `DEFER_MAX*8u64`) for element-count (`LOOP_MAX: u64`, `DEFER_MAX: u64`). 10 caller sites in cgenstmt.ww/cgenexpr.ww use `[i]` indexing which works identically for slice-shaped struct fields. Two-line let-then-assign idiom for the 4 inits is a real checker limitation: alloc's element-deferred `[]u8` → `[]T` retype only fires in let-init (checkletassign N_TSLICE LHS), and cglet's alloc-slice writeback shortcut (cgenstmt.ww:577) only fires in let-init too. Direct `c.field = alloc([], N)!` would silently emit a scalar alloc with a junk slice header. Filed #49 for the checker enhancement; the let-then-assign is Hare-idiomatic in the meantime. Verified 132/132 + 995_self_rebuild byte-identity.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%