test: re-cite retired-mechanism comments in surviving carriers
The migrate-and-retire audit left the surviving carriers as the only files still describing the retired combined.ww amalgamator as live: m2wwi/m3sep headers claimed .wwi was dead code, four byteid carriers carried dead cleanup of never-written .combined.ww intermediates, and sepbuild's enumeration mirror plus lib_byteid's completeness scan still skipped the retired artifact form (the same silent accommodation just removed from both drivers — dropping it here surfaced and flushed 39 stale untracked amalgamator outputs across lib/, which the gates now reject loudly). Remaining mentions are past-tense history or quoted diagnostics.
This commit is contained in:
@@ -47,7 +47,7 @@ struct row {
|
||||
|
||||
/* Two-module probe: `caller` calls `needle.want(h, n)` where `n: []u8`
|
||||
* widens into `(u8 | []u8)`. The // MODULE: directives + `use needle;`
|
||||
* shape parallels what cmd/ww driver synthesises in combined.ww. */
|
||||
* shape parallels the cmd/ww driver's resolved .unit.ww form. */
|
||||
static const struct row rows[] = {
|
||||
{ "dot_callee_slice_widen",
|
||||
"package needle;\n"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
* The dispatcher uses a BRANCHED callee (void arm → -1, fn-ptr arm →
|
||||
* v+100) so the field load actually feeds control flow (gate-blind
|
||||
* discipline). cstage `ww build` + run pins runtime; raw w6c vs w6c_ww
|
||||
* `.s` cmp on the driver-produced combined.ww pins rule-10 byte-id
|
||||
* `.s` cmp on the self-built two-module unit pins rule-10 byte-id
|
||||
* (the discriminating net for #223 — pre-fix the dispatcher diverges
|
||||
* `MOVQ reader(SB)` vs the pointer-field load).
|
||||
*
|
||||
|
||||
@@ -130,8 +130,6 @@ cleanup_tmp(const char *tmpdir, const char *base)
|
||||
}
|
||||
snprintf(p, sizeof p, "%s/%s.o", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; }
|
||||
return bad;
|
||||
}
|
||||
|
||||
@@ -130,8 +130,6 @@ cleanup_tmp(const char *tmpdir, const char *base)
|
||||
}
|
||||
snprintf(p, sizeof p, "%s/%s.o", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; }
|
||||
return bad;
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
* (AST-name vs cstage tinfo); precise Type identity is the #10 endgame.
|
||||
*
|
||||
* The PRE-FIX failure mode is a wwstage CHECKER REJECT, so the
|
||||
* discriminator is the `w6c_ww` build of the combined.ww succeeding at
|
||||
* all — pre-fix it errored out; post-fix it succeeds AND is byte-id
|
||||
* discriminator is the `w6c_ww` build of the two-module unit succeeding
|
||||
* at all — pre-fix it errored out; post-fix it succeeds AND is byte-id
|
||||
* with cstage. Self-contained 2-module fixtures (no lib coupling).
|
||||
*
|
||||
* scenario | shape | exit | byte-id
|
||||
|
||||
@@ -111,8 +111,6 @@ cleanup_tmp(const char *tmpdir, const char *base)
|
||||
}
|
||||
snprintf(p, sizeof p, "%s/%s.o", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; }
|
||||
return bad;
|
||||
}
|
||||
|
||||
@@ -111,8 +111,6 @@ cleanup_tmp(const char *tmpdir, const char *base)
|
||||
}
|
||||
snprintf(p, sizeof p, "%s/%s.o", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
snprintf(p, sizeof p, "%s/%s.combined.ww", tmpdir, base);
|
||||
if (unlink(p) != 0 && errno != ENOENT) { perror(p); bad = 1; }
|
||||
if (rmdir(tmpdir) != 0) { perror(tmpdir); bad = 1; }
|
||||
return bad;
|
||||
}
|
||||
|
||||
@@ -35,8 +35,7 @@
|
||||
* Single-file multi-package form (like 953): `package aa; ... package
|
||||
* main; import aa; ...` in one source, so w6c/w6c_ww see the cross-
|
||||
* module reference without -I path plumbing, and the build is self-
|
||||
* contained (no selfhost traversal → no .combined.ww fixture race, so
|
||||
* this lives in the parallel phase, not the 990-997 skip-set).
|
||||
* contained (no selfhost traversal).
|
||||
*
|
||||
* GATE POLARITY: must stay GREEN. A wrong exit means the value-global
|
||||
* mangle regressed (collision returned); a byte-id FAIL means the stages
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
* or the two stages' .s diverged (rule-10 break).
|
||||
*
|
||||
* Builds its own 2-module fixtures in a private mktemp dir, so all
|
||||
* intermediates (main.combined.ww, the linked binary, the .s probes)
|
||||
* land OFF the source tree (CLAUDE.md rule 14).
|
||||
* intermediates (the linked binary, the .s probes) land OFF the
|
||||
* source tree (CLAUDE.md rule 14).
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
* 901_asserttyped_gap — ww-stage checker nil-type gap-corpus net.
|
||||
*
|
||||
* The live `make test` stdlib _run suite drives the CSTAGE `ww`
|
||||
* (cmd/ check.c), which has no asserttyped pass; 990_selfhost feeds
|
||||
* the ww-stage dumper only -t/-a (tokens/ast), never the checker. So
|
||||
* the wwstage checker's asserttyped diagnostics (check.ww — the
|
||||
* The ordinary suites drive the CSTAGE `ww` (cmd/ check.c), which has
|
||||
* no asserttyped pass, and nothing else feeds the ww-stage dumper's
|
||||
* checker (-c) — only -t/-a (tokens/ast) run elsewhere. So the
|
||||
* wwstage checker's asserttyped diagnostics (check.ww — the
|
||||
* #15 / A.6.2.1e post-checker nil-type invariant gate) are UNOBSERVED
|
||||
* by every other test, yet the gate is now ARMED (a non-exempt
|
||||
* nil-typed value node writes its diagnostic and os.exit(1)s). This
|
||||
|
||||
@@ -209,8 +209,7 @@ main(void)
|
||||
if (getcwd(cwd, sizeof cwd) == NULL) return 1;
|
||||
|
||||
/* The real include set the sep producer needs to resolve the lib +
|
||||
* frontend package graph (verified live; the bare default path grabs
|
||||
* the in-tree *test.combined.ww fixtures and collides on `main`). */
|
||||
* frontend package graph (verified live). */
|
||||
char inc[4096];
|
||||
snprintf(inc, sizeof inc, "-I %s/lib -I %s/lib/ww -I %s/selfhost/cmd/wcc",
|
||||
cwd, cwd, cwd);
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
* (with duplicate-type already owned by runww_dup_type_reject). This
|
||||
* residual retains only the modfn separate-package artifact leg.
|
||||
*
|
||||
* Re-hosts every decl-namespace assertion that today lives ONLY in
|
||||
* 910/997 onto a gate that survives the M4 flip (910/997 are deleted at
|
||||
* the flip — they feed combined.ww / amalgamation inputs). Three legs:
|
||||
* Re-hosts every decl-namespace assertion that once lived ONLY in
|
||||
* 910/997 onto a gate that survives the M4 flip (910/997 were deleted
|
||||
* at the flip — they fed the retired amalgamation inputs). Three legs:
|
||||
*
|
||||
* dup family — a duplicate top-level fn/type/def/let in one (flat)
|
||||
* module must build-FAIL on BOTH stages. The fixtures
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
/*
|
||||
* 989_lib_byteid — cstage-vs-wwstage byte-identity gate over the lib/
|
||||
* surface that the embedded combined.ww set does NOT cover.
|
||||
* 989_lib_byteid — cstage-vs-wwstage byte-identity gate over the whole
|
||||
* lib/ surface, and the ONE owner of wwstage-DRIVER-leg byte identity.
|
||||
*
|
||||
* The 990-997 gates byte-id only the modules the selfhost tools import
|
||||
* (ascii/bytes/errors/io/math/memio/os/rt/strconv/strings/time/types/
|
||||
* utf8 + lex/parse/wcc/ww). Every other lib/ module compiles through
|
||||
* the CSTAGE driver alone (the 9xx _run tests), so a cs≠ww divergence
|
||||
* The bootstrap gates (991-995) byte-id only the modules the selfhost
|
||||
* tools import (ascii/bytes/errors/io/math/memio/os/rt/strconv/strings/
|
||||
* time/types/utf8 + lex/parse/wcc/ww). Every other lib/ module compiles
|
||||
* through the CSTAGE driver alone elsewhere, so a cs≠ww divergence
|
||||
* there ships gate-green — regex.finish was cs≠ww for weeks this way
|
||||
* (task #21, FC0). This gate closes the class: each lib test fixture is
|
||||
* sep-built through BOTH driver stages and the per-package asm compared.
|
||||
*
|
||||
* #94 sep layout: the gate drives `ww` (cstage) and `ww_ww`
|
||||
* (wwstage) instead of feeding a single .combined.ww to raw w6c/w6c_ww.
|
||||
* #94 sep layout: the gate drives `ww` (cstage) and `ww_ww` (wwstage).
|
||||
* Under sep EACH package compiles to its OWN <stem>.sepwork/<pkg>.s — the
|
||||
* lib body lands in <pkg>.s, NOT in __root.s (which holds only the test
|
||||
* fixture / probe main). So the byte-id MUST concat EVERY <pkg>.s (the
|
||||
@@ -472,7 +471,7 @@ corpus_complete(const char *cwd)
|
||||
* <stem>.sepwork/<pkg>.unit.ww scratch next to source; exclude it so
|
||||
* the scan enrols real source dirs only, not generated work dirs. */
|
||||
snprintf(cmd, sizeof cmd, "cd %s && find lib -name '*.ww' "
|
||||
"! -name '*.combined.ww' ! -path '*.sepwork/*' "
|
||||
"! -path '*.sepwork/*' "
|
||||
"| sed 's|/[^/]*$||' | sort -u", cwd);
|
||||
FILE *p = popen(cmd, "r");
|
||||
if (!p) return -1;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* 989_m2wwi_run — M2 `.wwi` export-data producer gate (task #22 arc).
|
||||
* Both stages (rule-10): the new `w6c -I <out.wwi>` producer is DEAD on
|
||||
* the live path (combined.ww stays the compile substrate; nothing reads
|
||||
* `.wwi`), so this is purely a new cross-stage byte-id substrate.
|
||||
* Both stages (rule-10): since the sep flip the `w6c -I <out.wwi>`
|
||||
* producer IS the live import path, and `.wwi` is a cross-stage
|
||||
* byte-id substrate this gate pins directly.
|
||||
*
|
||||
* POSITIVE gate — for each package (ascii/strings/getopt, drew2-audited
|
||||
* leak-free), drive the target as the PRIMARY module of a driver-combined
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
*
|
||||
* M3 = w6c `-c` (separate-compile / primary-only codegen) reads each imported
|
||||
* package's `.wwi` prototypes (M2's producer output) as import scope INSTEAD of
|
||||
* re-checking dep bodies. Pure addition: combined.ww stays the LIVE path, `-c`
|
||||
* is off on every existing invocation. This gate certifies the consumer.
|
||||
* re-checking dep bodies. Since the sep flip this IS the sole compile
|
||||
* path. This gate certifies the consumer.
|
||||
*
|
||||
* Fixture: a leaf -> mid -> root chain carrying ALL FOUR cross-boundary fact-
|
||||
* classes — fn SIGNATURE (leaf.add), struct/type LAYOUT (leaf.Point, used as a
|
||||
|
||||
@@ -121,10 +121,9 @@ strs_cmp(const void *a, const void *b)
|
||||
return strcmp(*(const char *const *)a, *(const char *const *)b);
|
||||
}
|
||||
|
||||
/* Concatenate a package directory's *.ww bodies (less *test.ww and
|
||||
* *.combined.ww, byte-sorted) into `out`. Mirrors the driver's body
|
||||
* enumeration so the substituted bodies-unit matches the sep-unit
|
||||
* structurally. */
|
||||
/* Concatenate a package directory's *.ww bodies (less *test.ww,
|
||||
* byte-sorted) into `out`. Mirrors the driver's body enumeration so
|
||||
* the substituted bodies-unit matches the sep-unit structurally. */
|
||||
static int
|
||||
append_dir_bodies(FILE *out, const char *dir)
|
||||
{
|
||||
@@ -138,7 +137,6 @@ append_dir_bodies(FILE *out, const char *dir)
|
||||
size_t nl = strlen(nm);
|
||||
if (nl <= 3 || strcmp(nm + nl - 3, ".ww") != 0) continue;
|
||||
if (nl >= 7 && strcmp(nm + nl - 7, "test.ww") == 0) continue;
|
||||
if (nl >= 12 && strcmp(nm + nl - 12, ".combined.ww") == 0) continue;
|
||||
names[n++] = strdup(nm);
|
||||
}
|
||||
closedir(d);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* `use` resolution + the -I search path + the libwwrt.a link.
|
||||
*
|
||||
* Each build runs from a per-driver scratch directory so the
|
||||
* intermediate .combined.ww/.s/.o files don't collide.
|
||||
* intermediate .s/.o files don't collide.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -72,7 +72,7 @@ build_via(const char *bin, const char *driver, const char *src,
|
||||
{
|
||||
char cmd[4096];
|
||||
/* -o <workdir>/<out> keeps the binary where the diff expects it AND
|
||||
* routes the .combined.ww/.s/.o into the workdir (T3) — no longer
|
||||
* routes the .s/.o intermediates into the workdir (T3) — no longer
|
||||
* next to the source, so concurrent driver builds never collide. */
|
||||
if (incs && incs[0]) {
|
||||
snprintf(cmd, sizeof cmd,
|
||||
|
||||
@@ -7,10 +7,9 @@
|
||||
* so w6c_ww must produce byte-identical output to wwdump_ww -c on
|
||||
* every program — this test pins that.
|
||||
*
|
||||
* (We do not diff against C-side `w6c` here because the C compiler has
|
||||
* features the ww cgen has not yet ported — float compare, fn-address
|
||||
* @symbol, indirect call. Test 990 probe 5 covers the C-vs-ww diff on
|
||||
* the subset that the ww cgen handles today.)
|
||||
* (We do not diff against C-side `w6c` here: this carrier's oracle is
|
||||
* the wwdump_ww -c TOOL OUTPUT, not the tool binary. The C-vs-ww diff
|
||||
* on real programs is owned by the blanket byte-identity gates.)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -189,9 +188,8 @@ main(void)
|
||||
char cwd[1024];
|
||||
if (getcwd(cwd, sizeof cwd) == NULL) return 1;
|
||||
|
||||
/* In-source corpus: programs the ww-side cgen handles today.
|
||||
* Mirrors probe 5 in 990_selfhost without the parts that drift
|
||||
* against C w6c. */
|
||||
/* In-source corpus: programs the ww-side cgen handles today,
|
||||
* kept free of the parts that drift against C w6c. */
|
||||
struct { const char *label; const char *src; } progs[] = {
|
||||
{ "ret42",
|
||||
"fn main() i32 = { return 42; };" },
|
||||
@@ -360,9 +358,9 @@ main(void)
|
||||
* The load-bearing M4 oracle: build w6c by SEPARATE compilation under
|
||||
* BOTH driver stages and prove they sep-produce byte-identical per-package
|
||||
* .s/.o/.wwi (cs==ww on the real tool's sep artifacts, rule 10). The
|
||||
* combined corpus + the sep-out==combined-out leg are gone — combined-mode
|
||||
* is being retired (E3 flip), so combined.ww is no longer fed as compiler
|
||||
* INPUT; the per-pkg cs==ww comparison is the surviving live oracle. Its
|
||||
* combined corpus + the sep-out==combined-out leg are gone with the
|
||||
* retired combined mode (E3 flip); the per-pkg cs==ww comparison is
|
||||
* the surviving live oracle. Its
|
||||
* cold pid-keyed scratch is wiped after the explicit bootstrap gate. */
|
||||
{
|
||||
char inc[4096], cmd[16384];
|
||||
|
||||
@@ -88,7 +88,7 @@ struct buildjob {
|
||||
* inherits no concurrent siblings — system() spawns a fresh /bin/sh -c.
|
||||
* stderr lands in <workdir>/build.err so concurrent builds don't merge
|
||||
* their diagnostics. `-o <workdir>/main` (T3) makes the driver write its
|
||||
* intermediates (main.{combined.ww,s,o}) beside the output in <workdir>
|
||||
* intermediates (main.{s,o} and the sepwork tree) beside the output in <workdir>
|
||||
* instead of next to every traversed source — so concurrent driver
|
||||
* builds no longer share the next-to-source fixed paths, and this gate
|
||||
* may run in the parallel group. The rebuilt binary still lands at
|
||||
|
||||
Reference in New Issue
Block a user