test: migrate dotfield/idxfield compound-assign to @test + runww rejects, retire C twins (fold-3)
949_dotfield_compound + 949_idxfield_compound are one bug class (#133-lineage compound-assign load-op-store on field lvalues; #34/#33, #263 carve-out) sharing the combine + hard-error path, so the two C carriers fuse into one commit: 26 value rows -> test/lang @test row-tables (primitive-only asserts), 8 reject rows -> runww //ww:error dual-stage carriers. byteid floor 50->52.
This commit is contained in:
15
test/wcc/data/idxfield_compound_slice/case.ww
Normal file
15
test/wcc/data/idxfield_compound_slice/case.ww
Normal file
@@ -0,0 +1,15 @@
|
||||
//ww:error "arr[i].field compound on slice field"
|
||||
// Lifted from test/wcc/949_idxfield_compound_run.c reject row "fld_he_slice"
|
||||
// (#33/rule-7): a compound assign on an indexed-element SLICE field is unwired
|
||||
// in both stages and MUST loud-fail. The substring is the shared diagnostic
|
||||
// body — byte-identical on both stages, pinned to "slice field" so it cannot
|
||||
// also match the float/str/tagged rows (no file:line, no cstage "ww: " prefix
|
||||
// — both differ cs vs ww).
|
||||
package main;
|
||||
type S = struct { f: []u8, g: i32 };
|
||||
export fn main() i32 = {
|
||||
let b: [2]u8 = [1u8, 2u8];
|
||||
let xs: [2]S = [S{f=b[0:2], g=0}, S{f=b[0:2], g=0}];
|
||||
xs[0].f += b[0:1];
|
||||
return 0;
|
||||
};
|
||||
Reference in New Issue
Block a user