check: type the N_BIN operand of as in the wwstage

An enum OR-fold under `as` ((m.A|m.B) as u32) was never typed:
scruttype resolves IDENT/DOT only, and the post-order restamp then
re-derived the folded member literals as untyped_int. The unstamped
operand missed cgtypeassert's #27b enum-reinterpret gate and lowered
as a phantom tagged assert — unconditional exit 1 at runtime on the
wwstage leg. checkisas now types an N_BIN lhs and the N_BIN restamp
preserves an existing enum stamp. Graduates the #59.9 stattest pin.
This commit is contained in:
2026-08-08 00:59:02 +09:00
parent c421c2b20a
commit 125f626697
4 changed files with 51 additions and 5 deletions

View File

@@ -1,13 +1,13 @@
package wwfixture;
def protocolversion: i32 = 1;
def corpuscount: i32 = 1236;
def corpuscount: i32 = 1237;
def errorcount: i32 = 314;
def compilecount: i32 = 12;
def runcount: i32 = 144;
def runcount: i32 = 145;
def runexitcount: i32 = 766;
def nativecount: i32 = 2472;
def corpushash: str = "4c8f4a693d2d8193b15f4215610c1d070dc83493b1189af772ca09cad4a69db7";
def nativecount: i32 = 2474;
def corpushash: str = "7763f2eb34524f67355114f5bdfbf3f64415152a8ec64060fe32a322bdbe1b24";
type directive = enum i32 {
ERROR = 0,