1b7fde21cdf5180627676212a52d8409d324e913
Wwstage checkisas fell straight through to the tagged-union arm on `enum_val as i32` reinterprets, false-positiving on every enum→int cast in lib/ (lib/time/instant.ww, lib/os, lib/os/lseek). Cstage admits these at cmd/wcc/check.c:1346-1357: when N_TYPEASSERT has LHS-or-RHS enum AND both ends are integer-typed, the target type returns without the tagged check. `is` (TYPETEST) stays rejected — cstage gates only N_TYPEASSERT. isinttypeast helper covers N_TENUM + i8..i64/u8..u64/int/uint/ uintptr/rune. Excludes floats so `enum as f64` still rejects. N_TYPEASSERT branch in checkisas detects enum on either side via resolvealias-unwrap, gates on both-ends-int, returns target type before the tagged-union check. 4/5 selfhost main.combined.ww files now resolve clean via wwdump_ww -r. Residual on selfhost/cmd/ww tracked as #53 (separate checkletassign u64→i32 path).
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%