diff --git a/Makefile b/Makefile index e2484fa8..a320cac6 100644 --- a/Makefile +++ b/Makefile @@ -343,7 +343,8 @@ $(BIN) $(LIB) $(OBJ)/wcc $(OBJ)/ww $(OBJ)/wwdump $(OBJ)/w6c $(OBJ)/w6a $(OBJ)/w6 # the registration, so adding a case never requires a TESTS edit and a second # per-case Make rule. UNIT_SOURCES = test/wcc/000_smoke.c test/wcc/100_lex.c \ - test/wcc/200_parse.c test/wcc/300_check.c test/wcc/400_w6c.c + test/wcc/200_parse.c test/wcc/300_check.c test/wcc/400_w6c.c \ + test/wcc/738_module_decl.c # Ww-native byte/artifact observers: single-file ww tests under # test/byteid/ on the test/testenv helper package (asm-pattern/symbol # windows, .wwi round-trips, inline sources with no corpus twin, the diff --git a/docs/test-system-v2.md b/docs/test-system-v2.md index f9292769..7cc18bfe 100644 --- a/docs/test-system-v2.md +++ b/docs/test-system-v2.md @@ -22,7 +22,7 @@ categories out of the ordinary developer target. | Category | Owner | | --- | --- | -| Arena, lexer, parser, checker, narrow codegen | Five in-process C unit binaries | +| Arena, lexer, parser, checker, module-decl parse, narrow codegen | Six in-process C unit binaries | | Compile success/rejection, stage-routed diagnostics, and runtime exit | `test/wcc/data/*/case.ww`, executed by `wwfixture` | | Package semantics | `test/package` and the native package-test coordinator | | Language behavior | `test/lang/*_test.ww` through the language `@test` runtime | @@ -32,20 +32,20 @@ categories out of the ordinary developer target. | Fixed point and self-host | `test-bootstrap` | | Host linker/platform behavior | `test-platform` | -The live declarative compiler corpus has 1,726 fixtures and 3,452 C/WW cells: -343 expected rejections, 19 compile-only successes, 209 exit-zero -programs, and 1,155 explicit-exit programs. +The live declarative compiler corpus has 1,745 fixtures and 3,490 C/WW cells: +346 expected rejections, 21 compile-only successes, 209 exit-zero +programs, and 1,169 explicit-exit programs. -16 native C carriers remain. They are partitioned exactly once as five -in-process units, six bootstrap gates, one platform gate -(`996_dyn_ww`), and four residual survivors, each held by a named -terminal reason: `738_module_decl` (in-process parsefile calls — a -C-bootstrap observer misfiled among the residuals; freezes with the -units at the selfhost flip), `810_dyn` and `989_dynentry_run` (host -loader/glibc claims — platform class), and `794_xmod_ident_prefer` -(pins the OPEN wwstage bare-leaf fn-shadow cgen bug, a #55 sibling; -its cstage-run + wwstage-build-accept assertion set is not -fixture-expressible while the bug lives — it retires with the fix). +15 native C carriers remain. They are partitioned exactly once into +the two terminal classes: six in-process units (`738_module_decl` +re-homed from the residuals — Go does not distinguish "bootstrap +observers" from unit tests, and its parsefile-call shape is exactly +the `200_parse` class), six bootstrap gates, and three platform-claim +carriers (`996_dyn_ww` under `test-platform`; `810_dyn` and +`989_dynentry_run` hold host loader/glibc claims and run with +`test-compiler`). The residual class is EMPTY: `794_xmod_ident_prefer` +— the last bug-pinned survivor — retired with its #55-sibling cgen +fix (its assertions migrated to `test/xmod/collide_test.ww`). The 2026-08-08 residual drain retired the other 107: 5 deleted against verified owners, 196 rows migrated into corpus fixtures (700_e2e's 136, @@ -71,7 +71,7 @@ The declarative corpus and the native `@test` owners are the permanent test surface — the `go/test/` analogy. The native C carrier fleet is the pre-Go-1.5 artifact and shrinks toward exactly two terminal classes: -1. **C-bootstrap observers.** The five in-process units watch the C +1. **C-bootstrap observers.** The six in-process units watch the C frontend from inside its own process and are irreplaceable while `cmd/` is the live frontend. The six bootstrap gates are the same class's proof column: they compare the wwstage tools against the C @@ -97,7 +97,7 @@ outright; git history is the archive. | Target | Composition | | --- | --- | -| `test` | Five in-process units plus one compile-only C/WW compiler-fixture smoke case | +| `test` | Six in-process units plus one compile-only C/WW compiler-fixture smoke case | | `test-compiler` | Complete fixture corpus plus residual compiler/integration carriers | | `test-package` | Package planning, grouping, routing, and package runtime only | | `test-lang` | Language-owned `@test` behavior | @@ -181,7 +181,7 @@ those observations about their coordinator. `test/wwfixture/process/main.ww` owns the lower-level `os.exec` primitives, not the CLI policy layered over them, so it is complementary rather than a duplicate owner. -The five unit sources have zero active `system`, `popen`, `fork`, or `exec` +The six unit sources have zero active `system`, `popen`, `fork`, or `exec` calls. Before direct conversion they contained two `popen` call sites and a full `test-unit` run launched one `ww -V` plus twelve `w6c` processes. `400_w6c` now checks the same twelve assembly fragments in process, grouped under ten unique