ref: b3f5bb4aa2b111fa1e2f1e813a7cb9975edc3b10
parent: 709c76b410df4f968557b6013284ac5bc2471213
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Aug 7 21:35:48 EDT 2012
Allow empty vararg list.
--- a/parse/infer.c
+++ b/parse/infer.c
@@ -426,12 +426,12 @@
if (i == ft->nsub)
fatal(n->line, "%s arity mismatch (expected %zd args, got %zd)",
ctxstr(st, n->expr.args[0]), ft->nsub - 1, n->expr.nargs - 1);
- if (ft->sub[i]->type == Tyvalist) {
- i++; /* to prevent triggering the arity mismatch on exit */
- break;
- }
inferexpr(st, n->expr.args[i], NULL, NULL);
unify(st, n->expr.args[0], ft->sub[i], type(st, n->expr.args[i]));
+ if (i + 1 < n->expr.nargs && ft->sub[i + 1]->type == Tyvalist) {
+ i += 2; /* to prevent triggering the arity mismatch on exit */
+ break;
+ }
}
if (i < ft->nsub)
fatal(n->line, "%s arity mismatch (expected %zd args, got %zd)",
--- a/test/tests
+++ b/test/tests
@@ -55,6 +55,7 @@
B str E 102
B generic E 42
B cstr-builtin E 42
+B genericcall E 42
B sizeof E 4
B gsizeof E 5
B mkunion E 0
--
⑨