wcc/check: #20 reject overlong array-literal in a tuple element (wwstage)
An overlong array literal as a tuple element -- let t: ([2]int, i32) = ([1,2,3], 5) -- was silently accepted by wwstage; cstage loud-rejects it. The #12+#106 over-fill coverage wired checkarrlitfits for direct-array, slice and alias lhs positions but not the tuple-element position. wwstage-only checker, reject-align: checkletassign gains an N_TTUPLE arm that walks the lhs element types (llhs.list) lockstep with the rhs values (n.rhs.list), calling the existing alias-aware checkarrlitfits per array element (no-ops scalars, recurses nested arrays). cstage unchanged (w6c md5 unchanged); reject-only, 990-997 8/8, no lib pin flips. test/wcc/832. Two sibling tuple-element positions stay open (filed, not folded -- they are reject-aligns on invalid programs, no selfhost byte-id impact): #25 tuple-RETURN overlong, #26 nested tuple-in-tuple.
This commit is contained in:
7
Makefile
7
Makefile
@@ -257,6 +257,7 @@ TESTS = $(BIN)/test_smoke $(BIN)/test_lex $(BIN)/test_parse $(BIN)/test_check \
|
||||
$(BIN)/test_alias_tuple_coerce \
|
||||
$(BIN)/test_str_eq \
|
||||
$(BIN)/test_overlong_arrlit \
|
||||
$(BIN)/test_tuple_elem_overlong \
|
||||
$(BIN)/test_slice_str_global_arg \
|
||||
$(BIN)/test_slice_str_global_zero \
|
||||
$(BIN)/test_slice_literal_global \
|
||||
@@ -715,6 +716,12 @@ $(BIN)/test_overlong_arrlit: test/wcc/828_overlong_arrlit.c $(BIN)/ww \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_tuple_elem_overlong: test/wcc/832_tuple_elem_overlong.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_arg: test/wcc/829_slice_str_global_arg.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