test: port the xmod same-leaf collision carriers to corpus fixtures
752_modparam_callee.c -> r752_modparam_xmod_variadic_vs_scalar,
r752_modparam_variadic_no_collision (run; alpha/beta module dirs)
784_xmod_alias_struct_collide_run.c -> r784_xmod_alias_struct_collide
(run-exit 42), r784_xmod_alias_struct_symmetric (21),
r784_xmod_alias_control (30) (sa/sb module dirs)
793_xmod_struct_argpush_collide_run.c -> r793_xmod_argpush_
{recvpush_t16 107, fieldread_t16 107, combined_t16 114,
recvpush_t12 6} (m1/m2 module dirs)
797_xmod_struct_field_layout_collide_run.c -> r797_xmod_layout_
{ptrread_t16 107, letcopy_t16 107, addrptr_pq 10, addrval_pq 10,
ptrwrite_t16 109, valwrite_t16 109} (m1/m2) + r797_nestfill_box (66)
r770-style sibling module dirs express the trees; the fixture corpus
runs both drivers natively (784's wwstage-build-only leg upgrades to
build+run) and test-data-byteid owns each carrier's aggregated per-
package .s compare (letcopy_t16's real discriminator). All 16 probed
green on both stages including per-package byte identity.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
// same-leaf variadic side of the r752 collision pair.
|
||||
package alpha;
|
||||
export fn foo(a: i32, xs: i32...) i32 = {
|
||||
return a + xs.len;
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
// same-leaf scalar-tagged side of the r752 collision pair.
|
||||
package beta;
|
||||
export fn foo(a: i32, n: (u8 | []u8)) i32 = {
|
||||
match (n) {
|
||||
case let c: u8 => return a + (c: i32);
|
||||
case let s: []u8 => return a + s.len;
|
||||
};
|
||||
return 0;
|
||||
};
|
||||
11
test/wcc/data/r752_modparam_xmod_variadic_vs_scalar/case.ww
Normal file
11
test/wcc/data/r752_modparam_xmod_variadic_vs_scalar/case.ww
Normal file
@@ -0,0 +1,11 @@
|
||||
//ww:run
|
||||
// migrated from test/wcc/752_modparam_callee.c: N_DOT callee param lookup must be module-keyed — alpha.foo variadic vs beta.foo scalar same leaf (#16).
|
||||
package main;
|
||||
import alpha;
|
||||
import beta;
|
||||
export fn main() i32 = {
|
||||
let n: (u8 | []u8) = 7u8;
|
||||
let r: i32 = beta.foo(10, n);
|
||||
if (r != 17) { return 11; };
|
||||
return 0;
|
||||
};
|
||||
Reference in New Issue
Block a user