docs: dissolve PROJECT_PLAN.md; drop retired-mechanism citations
PROJECT_PLAN.md was a historical disclaimer wrapping five still-open T1 driver items — those move to docs/test-system-v2.md (Open driver work); the rest is dated 2026-08-05 design history, archived in git. Also retired-mechanism cleanup: both drivers drop the *.combined.ww enumeration skip (the amalgamator is gone; leftover debris now fails loudly instead of being silently accommodated), the consumer-less m4_combined_epoch.md5 pin is deleted, and the wwi.ww/ww.h/check.ww comments that still described combined.ww as the live path are re-cited to the sep reality.
This commit is contained in:
@@ -3780,7 +3780,7 @@ fn exprtype(c: *checker, e: *syntax.node, hint: *syntax.node) *syntax.node = {
|
||||
// `scopelookup(c.cur, nm)` else-arm bound whichever
|
||||
// same-leaf global fn headed the flat scope bucket —
|
||||
// order-sensitive (os.read:i64 vs io.read:(i32|eof|closed)
|
||||
// flipped by combined.ww concat order), yielding a
|
||||
// flipped by scope-install order), yielding a
|
||||
// false `return: not assignable`. Leaving s nil falls
|
||||
// through to the fn-VALUE path below (exprtype(callee) →
|
||||
// TPTR peel → TFN.ret), matching cstage cmd/wcc/check.c
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
// wwi.ww — `.wwi` export-data producer (w6c_ww -I). M2 DEAD-CODE: writes
|
||||
// a re-parseable ww-prototype rendering of a package's EXPORTED surface.
|
||||
// Nothing consumes `.wwi` yet (combined.ww stays the live path); the only
|
||||
// caller is the new -I flag, off on every existing invocation.
|
||||
// wwi.ww — `.wwi` export-data producer (w6c_ww -I): a re-parseable
|
||||
// ww-prototype rendering of a package's EXPORTED surface. Since the
|
||||
// sep-compile flip (epic #22) this is the LIVE import path — the driver
|
||||
// runs one `w6c -c -I` per package and feeds each dep's `.wwi` to its
|
||||
// importers as import scope.
|
||||
//
|
||||
// wwstage twin of cmd/w6c/wwi.c — byte-identical output is a rule-10
|
||||
// requirement (`.wwi` is a new cross-stage byte-id substrate). Specs:
|
||||
// requirement (`.wwi` is a cross-stage byte-id substrate). Specs:
|
||||
// .ai/rob-M2-spec.md + .ai/drew-M2-checkexported.md.
|
||||
//
|
||||
// - Unparse walks the AST type-expr subtree (the N_T* nodes), NOT the
|
||||
// tinfo — tinfo collapses nominal pkg.Name identity.
|
||||
// - check_exported_type rides the producer entry (flag-gated), so M2
|
||||
// stays dead on the normal `.s` path. It rejects exactly one thing:
|
||||
// an exported signature naming a non-exported nominal type.
|
||||
// - A `.wwi` is ONE package's interface; the M2 gate feeds a driver-
|
||||
// combined unit, so the emit filters to PRIMARY decls (imported==0).
|
||||
// - check_exported_type rides the producer entry (flag-gated), off on
|
||||
// the normal `.s` path. It rejects exactly one thing: an exported
|
||||
// signature naming a non-exported nominal type.
|
||||
// - A `.wwi` is ONE package's interface; the emit filters to PRIMARY
|
||||
// decls (imported==0).
|
||||
|
||||
// Imports mirror check.ww (os/tok/strconv only): node/nkind/sym/skind/
|
||||
// scopelookuptype/streq/checker/tkind resolve bare in the selfhost's flat
|
||||
|
||||
@@ -394,8 +394,8 @@ fn dirfileattest(dirpath: *u8, name: *u8) bool = {
|
||||
};
|
||||
|
||||
// Filter for production enumeration: keep `*.ww` minus canonical
|
||||
// `*_test.ww`, the explicit compatibility sources above, and generated
|
||||
// `*.combined.ww` artifacts. Returns true to keep.
|
||||
// `*_test.ww` and the explicit compatibility sources above. Returns
|
||||
// true to keep.
|
||||
fn dirfilekeep(dirpath: *u8, name: *u8, nlen: u64) bool = {
|
||||
// nlen<=3 guard kept: a bare ".ww" (len 3) is rejected here but
|
||||
// would pass strings.hassuffix(".ww"); preserves cstage parity.
|
||||
@@ -404,9 +404,6 @@ fn dirfilekeep(dirpath: *u8, name: *u8, nlen: u64) bool = {
|
||||
s.ptr = name;
|
||||
s.len = nlen: i32;
|
||||
if (!strings.hassuffix(s, ".ww")) { return false; };
|
||||
// ".combined.ww" — full 12-char match mirrors cstage
|
||||
// cmd/ww/main.c enumerate_dir_ww strcmp (rule 10).
|
||||
if (strings.hassuffix(s, ".combined.ww")) { return false; };
|
||||
if (strings.hassuffix(s, "_test.ww")
|
||||
|| dirfileattest(dirpath, name)) { return false; };
|
||||
return true;
|
||||
@@ -433,7 +430,7 @@ fn bytecmp(a: *u8, alen: u64, b: *u8, blen: u64) i32 = {
|
||||
};
|
||||
|
||||
// enumeratedir — list production *.ww paths of `dirpath` (less canonical
|
||||
// and compatibility test sources plus *.combined.ww), byte-sort. Returns
|
||||
// and compatibility test sources), byte-sort. Returns
|
||||
// one exact pointer array of NUL-terminated full paths. This is the sole
|
||||
// directory-membership discovery path; the owning seppkg retains the list.
|
||||
fn enumeratedir(dirpath: *u8) (**u8, i32) = {
|
||||
|
||||
Reference in New Issue
Block a user