aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compile.c6
-rw-r--r--parse.c8
2 files changed, 9 insertions, 5 deletions
diff --git a/compile.c b/compile.c
index 9b615bc4..d384a477 100644
--- a/compile.c
+++ b/compile.c
@@ -644,9 +644,9 @@ CORD compile(env_t *env, ast_t *ast)
// Pass 2: assign positional args
// Pass 3: compile and typecheck each arg
table_t arg_bindings = {};
- for (arg_ast_t *arg = args; arg; arg = arg->next) {
- if (arg->name)
- Table_str_set(&arg_bindings, arg->name, arg->value);
+ for (arg_ast_t *call_arg = args; call_arg; call_arg = call_arg->next) {
+ if (call_arg->name)
+ Table_str_set(&arg_bindings, call_arg->name, call_arg->value);
}
for (arg_ast_t *call_arg = args; call_arg; call_arg = call_arg->next) {
if (call_arg->name)
diff --git a/parse.c b/parse.c
index b349bcb3..19a3a288 100644
--- a/parse.c
+++ b/parse.c
@@ -1177,8 +1177,10 @@ ast_t *parse_method_call_suffix(parse_ctx_t *ctx, ast_t *self) {
const char *arg_start = pos;
const char *name = get_id(&pos);
whitespace(&pos);
- if (!name || !match(&pos, "="))
+ if (!name || !match(&pos, "=")) {
+ name = NULL;
pos = arg_start;
+ }
ast_t *arg = optional(ctx, &pos, parse_expr);
if (!arg) {
@@ -1214,8 +1216,10 @@ ast_t *parse_fncall_suffix(parse_ctx_t *ctx, ast_t *fn, bool is_extern) {
const char *arg_start = pos;
const char *name = get_id(&pos);
whitespace(&pos);
- if (!name || !match(&pos, "="))
+ if (!name || !match(&pos, "=")) {
+ name = NULL;
pos = arg_start;
+ }
ast_t *arg = optional(ctx, &pos, parse_expr);
if (!arg) {