Pre-existing landmine surfaced by #5 (whole-STRUCT N_ASSIGN). Both stages' N_DOT dispatch gated on `lhs->lhs->kind == N_IDENT`; the parser produces N_UN(STAR, IDENT(p)) for `(*p).f`, so both sides fell off: - Write side (cgassign N_DOT base): emitted nothing, store dropped. - Read side (case N_DOT pointer-auto-deref): cgexpr derefed the pointer as a scalar, AX = first qword of struct, field offset dropped. Fix: retarget base / dot_lhs to the inner IDENT when shape is N_UN(STAR, IDENT). The existing via_ptr branch fires identically to `p.f`. v1 scope is bare-IDENT inner only; `(*expr).f` (non-IDENT pointer expression) is tracked separately as task #19. 702 covers 7 rows: write_i64/i32/str, read_i64/i32/str_len, roundtrip
8.9 KiB
8.9 KiB