c10fffae16066c93c1a0b88948e588687849a94f
An overlong array literal (more initializers than the declared length) is invalid -- cstage loud-rejects it everywhere -- but wwstage silently accepted (and truncated) it in several positions; #9 wired only the decl position. This folds the remaining three (one class: checkarrlitfits over-fill coverage), all wwstage-only reject-align: - #12a return fn f() [2]int = [1,2,3] -- silently accepted. - #12b call-arg g([1,2,3]) -- louded only late via cgen #271. - #106 alias type A=[2]int; let g: A = [1,2,3] -- silently truncated; checkarrlitfits bailed on the N_TNAME alias without chasing. Four inserts in check.ww: an alias-chase (resolvealias) at the top of checkarrlitfits (makes all callers alias-aware), the over-fill check wired into checkretassign (hoisted above the isassignable short-circuit) and desugarcallargs, and the alias-let-global guard made alias-aware. cstage unchanged (w6c md5 unchanged); reject-only, so no asm moves -- 990-997 8/8, no lib byte-id pin flips. A 5th position (tuple-element overlong) is a separate pre-existing hole, filed (#20). test/wcc/828 table-driven.
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%