From: Nicolas Williams Date: Wed, 2 Jul 2014 07:18:10 +0000 (-0500) Subject: Multi-arity needs better errors (fix #438) X-Git-Tag: jq-1.5rc1~151 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3a647d3e47e8f9ab59084da259aa4c4749668454;p=jq Multi-arity needs better errors (fix #438) --- diff --git a/compile.c b/compile.c index d5a1559..597fa6f 100644 --- a/compile.c +++ b/compile.c @@ -481,7 +481,7 @@ static int expand_call_arglist(struct locfile* locations, block* b) { for (inst* curr; (curr = block_take(b));) { if (opcode_describe(curr->op)->flags & OP_HAS_BINDING) { if (!curr->bound_by) { - locfile_locate(locations, curr->source, "error: %s is not defined", curr->symbol); + locfile_locate(locations, curr->source, "error: %s/%d is not defined", curr->symbol, block_count_actuals(curr->arglist)); errors++; // don't process this instruction if it's not well-defined ret = BLOCK(ret, inst_block(curr)); @@ -546,14 +546,7 @@ static int expand_call_arglist(struct locfile* locations, block* b) { } } - if (actual_args != desired_args) { - locfile_locate(locations, curr->source, - "error: %s arguments to %s (expected %d but got %d)", - actual_args > desired_args ? "too many" : "too few", - curr->symbol, desired_args, actual_args); - errors++; - } - + assert(actual_args == desired_args); // because now handle this above } ret = BLOCK(ret, prelude, inst_block(curr)); }