A rejected program emits no .s, so the test-lang-byteid (T2) gate cannot cover wwstage-reject -- yet the retired C twins asserted that BOTH stages reject with the same diagnostic. runww's //ww:error arm was cstage-only, so migrating reject rows onto it would silently drop the wwstage-reject coverage the C twins carried. Run w6c_ww (wwstage) alongside w6c (cstage) on each //ww:error case and require both to fail with the shared diagnostic body present. The body is identical across stages; only cstage's leading prefix differs, so the substring matches the body alone (no file:line). An ERROR row now reports PASS dual / FAIL cstage / FAIL wwstage. w6c_ww resolves off the same $BIN as the C twins -- no new harness threading. Two pilot reject cases (runww_dup_main_reject, runww_dup_type_reject) exercise the dual-stage path; the wwstage leg is proven non-vacuous (a cstage-rejects/wwstage-accepts case reports FAIL wwstage). Prerequisite for migrating fold-3 reject rows onto runww.
9 lines
387 B
Plaintext
9 lines
387 B
Plaintext
//ww:error "duplicate fn main"
|
|
// Pilot for #7a: two `fn main` definitions must be LOUD-rejected by BOTH
|
|
// stages. The substring is the shared diagnostic body (no file:line prefix,
|
|
// which differs cstage vs wwstage) — the #20 non-vacuity anchor and the
|
|
// dual-stage (w6c AND w6c_ww) reject-coverage proof.
|
|
package main;
|
|
fn main() i32 = { return 0; };
|
|
fn main() i32 = { return 1; };
|