From 2eafa7a4da020ca6a6ddfd29c70cc8c1f41493a3 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 3 Mar 2024 17:21:55 -0500 Subject: Fix issue with unnamed args getting name flag --- compile.c | 6 +++--- parse.c | 8 ++++++-- 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) { -- cgit v1.2.3