3fa5ccd5aefd0aa2d889e1ad03d59ad99ef17728
exprtype's N_CALL callee resolution used flat scopelookup, returning the first match in the bucket regardless of caller module. Two modules exporting fns with the same leaf name (e.g. alpha.foo i64 + beta.foo str) caused bare-leaf callees inside one of them to pick the other's fn, then false-positive at return type. Cstage cexpr N_IDENT routes through scope_lookup_prefer(c->cur, c->cur_mod, name) which short-circuits to the same-module hit before falling through to flat scope. Mirror at check.ww:675 — splits N_IDENT vs N_DOT so the latter keeps flat scopelookup and the explicit module qualifier path stays distinct (tracked as #58). c.curmod is already tracked by checkfile pass 2 (check.ww:1240-1241), so this is a one-call swap on the N_IDENT branch. No plumbing. Reviewer cascade probe across all 131 .ww/.combined.ww files in lib/ + selfhost/ shows lib/memio/memiotest.combined.ww drops 4 spurious "let: not assignable" lines as a side effect, with no new errors. Net improvement.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%