wcc: drop @test fns from non-T builds, both stages (harec check.c:3941)

Splice @test N_FNDECLs out of the unit after the body-check passes,
mirroring harec's checked-but-not-emitted: a broken @test body still
errors loudly in non-T; @test-free units are emission-unchanged.
910/997 table rows pin keep/test x non-T/-T, head+consecutive unlink,
undef-body reject, and plain-calls-dropped loud link-fail. w6c+wwdump
combined.ww regen. (#6-team)
This commit is contained in:
2026-06-10 22:20:15 +09:00
parent 7470b1a5c3
commit 08a76cf4c8
10 changed files with 442 additions and 4 deletions

View File

@@ -0,0 +1,18 @@
// #6 fixture: a plain fn (the entry) CALLS a @test fn. In non-T the
// @test def is spliced out but the CALL survives — harec-faithful: the
// reference is left DANGLING and fails LOUDLY at link, never a silent
// mis-link (ref/harec/src/check.c:3941 drops the decl; the call site's
// symbol is never satisfied). Built non-T then linked: the link MUST
// fail with an undefined reference to the dropped @test symbol (910
// linkfail probe). No -T variant — a user main is -T-rejected (910).
package data;
@test fn calldropped_test() void = {
let a: i32 = 1;
};
export fn main() i32 = {
calldropped_test();
return 0;
};