shithub: mc

Download patch

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
--