2026-07-08 (fable-c) — root cause pinned; parked as feature-sized
Confirmed the ROOT CAUSE: typedef float v4[4]; registers v4 as a plain
scalar float — ParseCTypedef reads the name then skips the [4] (falls to
the while <> ';' skip). So v4 r is a scalar (a brace init then errors
"expected C expression"), and v4 rows[2] never becomes 2-D. Nothing to do
with the init walker (which is ready — the multidim-ordinal-global fix,
b203/0db36672, already drives N-D ordinal arrays end to end).
The fix is ARRAY-TYPEDEF SUPPORT, a feature spanning the shared declarator path (self-host risk), not a bounded init patch:
- Store the typedef's inherent array shape (a
CTypedefArrLen/ NDims/DimSpan parallel to CTypedefProcSig) — capture the[N]..after the name in ParseCTypedef. - ParseCDeclType outputs that shape (a
CTypeArrLen/dims) when a declarator's base is an array typedef. - The local + global array decl paths FOLD the typedef's dims UNDER any
declarator-applied dims:
v4 r-> [4];v4 rows[2]-> [2][4] (set SymArrNDims/DimSpan), then the existing walker inits it (single + array, local + global). Parked (claim released) — needs a focused declarator-path session. Unblocks cglm (vec4 csCoords[8], vec4 = float[4]).
Log
- 2026-07-08 — resolved, commit a826f40a.