wcc: wwstage checks call arity at desugarcallargs

cstage rejects `add(1,2,3)` and `add(4)` (too many / not enough
arguments); wwstage ran no count check at this seam, so both built
-- a stray arg pushed silently, a missing one read garbage
(cs-reject/ww-accept build-verdict divergence). Surplus errs when
params exhaust with args left; missing errs on a leftover regular
param (a leftover TK_ELLIPSIS or FFI "..." is a legal zero-arg
variadic tail). fn-VALUE callees still bail at decl==nil -- their
whole typecheck, arity included, stays task #51.
This commit is contained in:
2026-08-09 01:33:14 +09:00
parent cf9d83b209
commit 503d1ab01e
4 changed files with 44 additions and 4 deletions

View File

@@ -1,13 +1,13 @@
package wwfixture;
def protocolversion: i32 = 1;
def corpuscount: i32 = 1752;
def errorcount: i32 = 349;
def corpuscount: i32 = 1754;
def errorcount: i32 = 351;
def compilecount: i32 = 21;
def runcount: i32 = 209;
def runexitcount: i32 = 1173;
def nativecount: i32 = 3504;
def corpushash: str = "d3c7b6a94918a9c9af14df029ef0cdf6d976a3f1351d41ff9db9a69b753cb016";
def nativecount: i32 = 3508;
def corpushash: str = "67a119b41fd78b1f2900c096e5b5670e98935d2965573f67bb21ab817931dffa";
type directive = enum i32 {
ERROR = 0,