9cf156039201c38c1265fd1477b5e2d61a3b899c
A compound assign (`-=`/`+=`) on a local field silently dropped the operator in wwstage, storing the bare rhs. Two same-class sites in cgenexpr.ww lacked the `n.op != TK_ASSIGN` load-combine-store guard that the pointer-to-struct path already had: the local str/slice pseudo-field fall-through (`view.len -= 1` stored 1) and the direct struct-local scalar field (`p.x -= 4` stored 4). Both now load the field, push, eval rhs, pop, combine (ADDQ/SUBQ), and store — mirroring cstage cmd/w6c/cgen.c:3235-3264 and :3477-3502. cstage was already correct; this aligns wwstage up. PLUSEQ/MINUSEQ only, matching cstage's switch. This is the missing-SUBQ half of fmt's cs/ww divergence (fmt's view.len-=1). The remaining match-label-counter offset is separate, so 777/780/781 stay STAGE_CS until that lands. test/wcc/data/attest_pass.ww: @test check_local_field_compound covers both sites (str pseudo-field + struct scalar), run by 910_at_test (cstage) and 997_at_test_ww (wwstage); pre-fix the dropped op aborts via the 1/0 idiom.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%