wcc/ww: size/align/offset return untyped_int, not i32 (catB-9)
wwstage's size/align/offset builtins returned i32 while their node stamp was already untyped_int -- and cstage returns ty_untyped_int (check.c:1570/1602). The diverging return false-rejected the canonical Hare idiom `let x: size = size(T)` in wwstage (`let: not assignable (i32 -> size)`) where cstage accepts; sha256.ww:189 was the live casualty, quarantined as M_WWREJECT (#59.13) in the byte-id gate. Align wwstage up: return untyped_int at the three sites (check.ww size/align/offset). The len / slice .len / .cap returns stay i32 -- those match cstage (check.c:1534) and are correct. cstage is unchanged. Regenerates the w6c and wwdump combined.ww. Full 990-997 byte-id holds (a size()-mixing comparison emits CMPQ byte-identically on both stages, so the untyped-int widening does not perturb the asm). Table-driven 844 test: the `let x: size = size(T)` family now compiles on both stages.
This commit is contained in:
7
Makefile
7
Makefile
@@ -247,6 +247,7 @@ TESTS = $(BIN)/test_smoke $(BIN)/test_lex $(BIN)/test_parse $(BIN)/test_check \
|
||||
$(BIN)/test_arr_strslice_elem \
|
||||
$(BIN)/test_arr_tagged_elem \
|
||||
$(BIN)/test_dup_main_reject \
|
||||
$(BIN)/test_size_untyped_int \
|
||||
$(BIN)/test_tagged_staticinit \
|
||||
$(BIN)/test_arr_infer_len \
|
||||
$(BIN)/test_arr_cap_reject \
|
||||
@@ -1445,6 +1446,12 @@ $(BIN)/test_tagged_staticinit: test/wcc/843_tagged_staticinit.c $(BIN)/ww \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_size_untyped_int: test/wcc/844_size_untyped_int.c $(BIN)/ww \
|
||||
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
||||
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_slice_str_global_zero: test/wcc/686_slice_str_global_zero.c $(BIN)/ww \
|
||||
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
||||
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
||||
|
||||
Reference in New Issue
Block a user