0c4a5ecea09b67abc5fca757a61b69765bdf95d7
Under M1 mangling, EXPORTED non-fn decls (let/def/type) skipped path- qualification and emitted a BARE symbol (`types.I64_MAX` -> `I64_MAX`). Under separate compilation two packages exporting the same data leaf would then collide at w6l. Masked in-tree only because no two packages export the same non-fn leaf. §7-A (USER-locked, harec's model): path-qualify EVERY exported decl (fn AND data) at the single mangle choke-point — mod_collect / collectmods. Retire the `!isfn && d->export` (cstage) and `exported==0` (wwstage) skips: every decl with a module now mangles `<mod>.<name>`. The ONLY bare symbols left are @symbol FFI overrides (ffi_resolve at emit) and the ROOT unit's `main` — both already carved out before the map insert. With exported decls in the map the exact-(name,hint)-or-bare value dance is dead — its sole purpose was the bare-exported case. Delete mod_lookup_value / mod_mangle_value / mahint (cstage) and modlookupvalue / emitsymnamehint (wwstage); the value-global sites now route through the same hint-aware-with-fallback lookup as fns (mod_mangle_fn/mafn, emitfnname). Net negative LOC in the mangler. Transparent rename on the live combined path: ref and def move in lockstep, so cs==ww byte-id holds and the self-host still builds + runs (fixed-point/995). Byte-id REBASELINE — all 5 ww binaries shift. The w6c/wwdump combined.ww embed wcc cgen and are regenerated.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%