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.
15 lines
598 B
Plaintext
15 lines
598 B
Plaintext
//ww:error "single-dot field compound on str field"
|
|
// Lifted from test/wcc/949_dotfield_compound_run.c reject row "dotfld_he_str"
|
|
// (#34/rule-7): a compound assign on a single-dot STR field is unwired in both
|
|
// stages and MUST loud-fail. The substring is the shared diagnostic body —
|
|
// byte-identical on both stages, pinned to "str field" so it cannot also match
|
|
// the float/slice/tagged rows (no file:line, no cstage "ww: " prefix — both
|
|
// differ cs vs ww).
|
|
package main;
|
|
type S = struct { f: str, g: int };
|
|
export fn main() i32 = {
|
|
let s: S = S{f="a", g=0};
|
|
s.f += "x";
|
|
return 0;
|
|
};
|