test: port 787/929 cross-module match carriers to corpus fixtures
787_xmod_variant_match.c -> r787_xmod_variant_no_default (run-exit 21), r787_xmod_variant_bind_default (42), r787_xmod_variant_shape_a (12) (pkg/errs module dirs), r787_xmod_variant_foreign_qualifier (staged error: w6c 'is not a variant of', w6c_ww rejects via the #95 ambiguity guard — the carrier asserted reject polarity only) 929_match_4arm_cross_module_run.c -> r929_match_{4arm_shadowed_ canonical,3arm_shadowed,5arm_shadowed,6arm_shadowed,4arm_mixed_kinds, 4arm_shadowed_reverse} (run; single-file a+b packages, dropping the carrier's accidental doubled 'package b;' line) 929's byte-id upgrades from 994-delegated to per-fixture via test-data-byteid; the asm-level distinct-CMPQ sentinel remains 728's separate concern. All rows probed green on both stages.
This commit is contained in:
14
test/wcc/data/r787_xmod_variant_shape_a/case.ww
Normal file
14
test/wcc/data/r787_xmod_variant_shape_a/case.ww
Normal file
@@ -0,0 +1,14 @@
|
||||
//ww:run-exit 12
|
||||
// migrated from test/wcc/787_xmod_variant_match.c: Shape A — a dotted body variant (errs.bad) keeps ITS OWN qualifier in case matching.
|
||||
package main;
|
||||
import pkg;
|
||||
import errs;
|
||||
fn classify(x: pkg.e) i32 = {
|
||||
match (x) {
|
||||
case errs.bad => return 1;
|
||||
case pkg.local => return 2;
|
||||
};
|
||||
};
|
||||
export fn main() i32 = {
|
||||
return classify(pkg.mkbad()) * 10 + classify(pkg.mklocal());
|
||||
};
|
||||
3
test/wcc/data/r787_xmod_variant_shape_a/errs/errs.ww
Normal file
3
test/wcc/data/r787_xmod_variant_shape_a/errs/errs.ww
Normal file
@@ -0,0 +1,3 @@
|
||||
// the foreign variant module for the r787 Shape A scenario.
|
||||
package errs;
|
||||
export type bad = !void;
|
||||
7
test/wcc/data/r787_xmod_variant_shape_a/pkg/pkg.ww
Normal file
7
test/wcc/data/r787_xmod_variant_shape_a/pkg/pkg.ww
Normal file
@@ -0,0 +1,7 @@
|
||||
// union whose BODY holds a dotted cross-module variant (errs.bad | local).
|
||||
package pkg;
|
||||
import errs;
|
||||
export type local = !void;
|
||||
export type e = !(errs.bad | local);
|
||||
export fn mkbad() e = { let x: errs.bad; return x; };
|
||||
export fn mklocal() e = { let y: local; return y; };
|
||||
Reference in New Issue
Block a user