758d3ec8c39b3437e6c417122ccda5c78bfcfd8c
typeeqast's N_TNAME arm compared variant types by SURFACE string (streq(aa.str, bb.str)), so a cross-module type referenced bare (oserror) vs qualified (os.oserror) mis-compared unequal -> A6: concrete->tagged silently mis-identified the variant. Resolve each name to its canonical type sym before comparing: keep the streq fast-path, else aliassym(c,aa)==aliassym(c,bb) (ww's existing resolver maps bare [#53] and qualified [#51] to the same SK_TYPE sym). AST analog of cstage type.c:278 TY_NAMED a==b / harec types.c:579 ident_equal -- NO interning. `c` threaded into 21 typeeqast sites. B-full Layer 1: closes A6/#14; Layer 2 (A7 tagged->tagged subset reject) stays deferred to the #199b flatten arc. Byte-id-neutral; graduates shlex #59.15 (989 M_WWREJECT->M_ID). test/wcc/839 pins both-stage symmetry (discriminating teeth = 989 #59.15, per 839 doc).
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%