test: migrate Fam10 alias value tests to @test, carve divergences to pins (#5-C3)
fold-2 chunk C3 (drew's Fam8-13 plan): 8 alias value-row C drivers, 205 rows
re-homed with zero loss -- 177 value -> 8 test/lang/alias_*_test.ww @test
row-tables; 16 reject -> runww //ww:error carriers (both stages reject);
3 cs!=ww value rows -> 2 *_runonly_test.ww (T1, byte-id-excluded, #60/#81);
9 irreducible asymmetric rows -> slim C pins, each ticket-cited and
mutation-proven non-vacuous:
- accept amplen1/2,ampcap2: cs runs / ww rejects 'unsupported address-of
shape' (#96)
- cgen_b5 g73_heapfill: cs!=ww .s + ww link-fails on self-contained alloc;
compile-smoke pin (#24)
- cgen_b6 fsarg2_bound: both reject, different msgs, each vs the correct
stage (#271/#165 cs vs #272/#276/#277 ww)
- emit_b7 slc/slcstr/slctag _2lvl + slc_plain_ctl: slice-literal static-init
divergence (#120/#29-kin, ken-d2-oracle)
4 fully-migrated drivers deleted, 4 slimmed-in-place to hold only the
irreducible pins. LANGBYTEID floor 74->82 (8 new byte-id @test files); test
count 388->384 (4 deleted; 4 slimmed kept). do-not-auto-batch files not in
Fam10.
This commit is contained in:
8
test/wcc/data/alias_assert_bool/case.ww
Normal file
8
test/wcc/data/alias_assert_bool/case.ww
Normal file
@@ -0,0 +1,8 @@
|
||||
//ww:error "assert: cond must be bool"
|
||||
package main;
|
||||
type myb = bool;
|
||||
export fn main() i32 = {
|
||||
let b: myb = true;
|
||||
assert(b);
|
||||
return 0;
|
||||
};
|
||||
13
test/wcc/data/alias_binop_vs_alias/case.ww
Normal file
13
test/wcc/data/alias_binop_vs_alias/case.ww
Normal file
@@ -0,0 +1,13 @@
|
||||
//ww:error "operands have differing types"
|
||||
// #5-C3 Q4: the historical "cs loud / ww silent by design" tag is SUPERSEDED
|
||||
// — at HEAD 07b3c74 BOTH stages reject with this substring (divergence closed).
|
||||
// Do NOT re-split this into a cs-only pin: the reject is now symmetric.
|
||||
package main;
|
||||
type k1 = int;
|
||||
type k2 = int;
|
||||
export fn main() i32 = {
|
||||
let a: k1 = 3;
|
||||
let b: k2 = 4;
|
||||
let c = a + b;
|
||||
return c: i32;
|
||||
};
|
||||
8
test/wcc/data/alias_cycle_alias/case.ww
Normal file
8
test/wcc/data/alias_cycle_alias/case.ww
Normal file
@@ -0,0 +1,8 @@
|
||||
//ww:error "circular type dependency"
|
||||
package main;
|
||||
type a = b;
|
||||
type b = a;
|
||||
export fn main() i32 = {
|
||||
if (size(a) != 8) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
7
test/wcc/data/alias_cycle_self/case.ww
Normal file
7
test/wcc/data/alias_cycle_self/case.ww
Normal file
@@ -0,0 +1,7 @@
|
||||
//ww:error "circular type dependency"
|
||||
package main;
|
||||
type a = a;
|
||||
export fn main() i32 = {
|
||||
if (size(a) != 8) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
8
test/wcc/data/alias_cycle_struct/case.ww
Normal file
8
test/wcc/data/alias_cycle_struct/case.ww
Normal file
@@ -0,0 +1,8 @@
|
||||
//ww:error "circular type dependency"
|
||||
package main;
|
||||
type s1 = struct { x: s2 };
|
||||
type s2 = struct { x: s1 };
|
||||
export fn main() i32 = {
|
||||
if (size(s1) != 8) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
9
test/wcc/data/alias_fill0_ctl/case.ww
Normal file
9
test/wcc/data/alias_fill0_ctl/case.ww
Normal file
@@ -0,0 +1,9 @@
|
||||
//ww:error "has a str/slice/struct/tagged element"
|
||||
package main;
|
||||
type el0 = struct { a: i64 };
|
||||
type S = struct { arr: [2]el0, n: i64 };
|
||||
export fn main() i32 = {
|
||||
let s = S { arr = [el0 { a = 5 }, el0 { a = 6 }], n = 3 };
|
||||
if (s.arr[0].a + s.arr[1].a + s.n != 14) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
10
test/wcc/data/alias_fill2_loud/case.ww
Normal file
10
test/wcc/data/alias_fill2_loud/case.ww
Normal file
@@ -0,0 +1,10 @@
|
||||
//ww:error "has a str/slice/struct/tagged element"
|
||||
package main;
|
||||
type el0 = struct { a: i64 };
|
||||
type el = el0;
|
||||
type S = struct { arr: [2]el, n: i64 };
|
||||
export fn main() i32 = {
|
||||
let s = S { arr = [el0 { a = 5 }, el0 { a = 6 }], n = 3 };
|
||||
if (s.arr[0].a + s.arr[1].a + s.n != 14) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
12
test/wcc/data/alias_fsarg0_loud/case.ww
Normal file
12
test/wcc/data/alias_fsarg0_loud/case.ww
Normal file
@@ -0,0 +1,12 @@
|
||||
//ww:error "float-bearing struct arg from a non-ident source"
|
||||
package main;
|
||||
type fs0 = struct { x: f64 };
|
||||
fn mk() fs0 = {
|
||||
let s: fs0; s.x = 2.5;
|
||||
return s;
|
||||
};
|
||||
fn g(p: fs0) f64 = { return p.x; };
|
||||
export fn main() i32 = {
|
||||
if (g(mk()) != 2.5) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
11
test/wcc/data/alias_g73_static_str/case.ww
Normal file
11
test/wcc/data/alias_g73_static_str/case.ww
Normal file
@@ -0,0 +1,11 @@
|
||||
//ww:error "#129 A.2 scope"
|
||||
package main;
|
||||
type s1t = str;
|
||||
type s2t = s1t;
|
||||
type box = struct { s: s2t, n: int };
|
||||
let g: box = box { s = "hello", n = 5: int };
|
||||
export fn main() i32 = {
|
||||
if (g.n != 5) { return 1; };
|
||||
if (g.s.len != 5) { return 2; };
|
||||
return 0;
|
||||
};
|
||||
9
test/wcc/data/alias_slcslc/case.ww
Normal file
9
test/wcc/data/alias_slcslc/case.ww
Normal file
@@ -0,0 +1,9 @@
|
||||
//ww:error "not assignable"
|
||||
package main;
|
||||
type ms0 = []i64;
|
||||
type ms = ms0;
|
||||
let G: []ms = [[1, 2], [3]];
|
||||
export fn main() i32 = {
|
||||
if (len(G) != 2) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
7
test/wcc/data/alias_slcstr_plain/case.ww
Normal file
7
test/wcc/data/alias_slcstr_plain/case.ww
Normal file
@@ -0,0 +1,7 @@
|
||||
//ww:error "slice-of-{str,slice,tagged} literal static-init unsupported"
|
||||
package main;
|
||||
let G: []str = ["aa", "bbb"];
|
||||
export fn main() i32 = {
|
||||
if (len(G[0]) != 2) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
22
test/wcc/data/alias_try_loud_38b/case.ww
Normal file
22
test/wcc/data/alias_try_loud_38b/case.ww
Normal file
@@ -0,0 +1,22 @@
|
||||
//ww:error "sret-class call result unwired"
|
||||
package main;
|
||||
type e0 = !i64;
|
||||
type big = struct { a: i64, b: i64, c: i64, d: i64, e: i64, f: i64, g: i64 };
|
||||
type r0 = (big | e0);
|
||||
type r = r0;
|
||||
fn w() r = {
|
||||
let s: big;
|
||||
s.a = 1; s.b = 2; s.c = 3; s.d = 4; s.e = 5; s.f = 6; s.g = 77;
|
||||
return s;
|
||||
};
|
||||
fn outer() (i64 | e0) = {
|
||||
let v = w()?;
|
||||
return v.g;
|
||||
};
|
||||
export fn main() i32 = {
|
||||
match (outer()) {
|
||||
case let n: i64 => { if (n != 77) { return 1; }; };
|
||||
case e0 => { return 2; };
|
||||
};
|
||||
return 0;
|
||||
};
|
||||
13
test/wcc/data/alias_union_as_bound/case.ww
Normal file
13
test/wcc/data/alias_union_as_bound/case.ww
Normal file
@@ -0,0 +1,13 @@
|
||||
//ww:error "aggregate init from unhandled rhs shape"
|
||||
package main;
|
||||
type base = struct { a: size, b: size };
|
||||
type ali = base;
|
||||
export fn main() i32 = {
|
||||
let x: ali;
|
||||
x.a = 4; x.b = 9;
|
||||
let v: (void | ali) = x;
|
||||
if (!(v is ali)) { return 1; };
|
||||
let w = v as ali;
|
||||
if (w.b != 9) { return 2; };
|
||||
return 0;
|
||||
};
|
||||
12
test/wcc/data/alias_untyped_nestvar/case.ww
Normal file
12
test/wcc/data/alias_untyped_nestvar/case.ww
Normal file
@@ -0,0 +1,12 @@
|
||||
//ww:error "not assignable"
|
||||
// #5-C3 Q4: the historical "cs loud / ww silent by design" tag is SUPERSEDED
|
||||
// — at HEAD 07b3c74 BOTH stages reject (common substring "not assignable";
|
||||
// divergence closed). Do NOT re-split into a cs-only pin.
|
||||
package main;
|
||||
type inner = (i64 | str);
|
||||
type inner2 = inner;
|
||||
export fn main() i32 = {
|
||||
let v: (void | inner2) = 7;
|
||||
if (v is void) { return 1; };
|
||||
return 0;
|
||||
};
|
||||
10
test/wcc/data/alias_v2_ambig/case.ww
Normal file
10
test/wcc/data/alias_v2_ambig/case.ww
Normal file
@@ -0,0 +1,10 @@
|
||||
//ww:error "bare source structurally matches >=2 NAMED variants"
|
||||
package main;
|
||||
type p1 = *i64;
|
||||
type p2 = *i64;
|
||||
export fn main() i32 = {
|
||||
let x: i64 = 7;
|
||||
let v: (void | p1 | p2) = &x;
|
||||
if (v is p1) { return 0; };
|
||||
return 1;
|
||||
};
|
||||
12
test/wcc/data/alias_v2_ambig2/case.ww
Normal file
12
test/wcc/data/alias_v2_ambig2/case.ww
Normal file
@@ -0,0 +1,12 @@
|
||||
//ww:error "bare source structurally matches >=2 NAMED variants"
|
||||
package main;
|
||||
type q1 = *i64;
|
||||
type p1 = q1;
|
||||
type q2 = *i64;
|
||||
type p2 = q2;
|
||||
export fn main() i32 = {
|
||||
let x: i64 = 7;
|
||||
let v: (void | p1 | p2) = &x;
|
||||
if (v is p1) { return 0; };
|
||||
return 1;
|
||||
};
|
||||
Reference in New Issue
Block a user