summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorStephen Dolan <mu@netsoc.tcd.ie>2012-12-04 00:39:21 +0000
committerStephen Dolan <mu@netsoc.tcd.ie>2012-12-04 00:39:21 +0000
commit616e8f9924ad9df22acf58c79c5d49ef6030fcb8 (patch)
tree05f9754c3b927e419d183fc012f0d29a0d7fed3a /parser.y
parenta88d53d2fda9a755c9c972a09a1206d54ca0d8b2 (diff)
Refactor function argument passing into what it always should have been.
Most visible change is that error messages when a function is called with the wrong number of arguments are much better.
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y7
1 files changed, 4 insertions, 3 deletions
diff --git a/parser.y b/parser.y
index e3d32e45..f77d6d92 100644
--- a/parser.y
+++ b/parser.y
@@ -299,13 +299,14 @@ Term {
FuncDef:
"def" IDENT ':' Exp ';' {
- $$ = gen_function(jv_string_value($2), $4);
+ $$ = gen_function(jv_string_value($2), gen_noop(), $4);
jv_free($2);
} |
"def" IDENT '(' IDENT ')' ':' Exp ';' {
- block body = block_bind(gen_op_block_unbound(CLOSURE_PARAM, jv_string_value($4)), $7, OP_IS_CALL_PSEUDO);
- $$ = gen_function(jv_string_value($2), body);
+ $$ = gen_function(jv_string_value($2),
+ gen_op_block_unbound(CLOSURE_PARAM, jv_string_value($4)),
+ $7);
jv_free($2);
jv_free($4);
}