X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=parser.c;h=32e9427bc49be1bb6c14e261fa8fe30a7ca6cc74;hp=84c3e0907673fe5c9848bf5f5e1334713efb5a06;hb=a01388ea7dc38a8d895488e63d0ec9d875159156;hpb=57c0a0980089272a064273f99ad1a4bc87ac8ea2 diff --git a/parser.c b/parser.c index 84c3e09..32e9427 100644 --- a/parser.c +++ b/parser.c @@ -3998,12 +3998,6 @@ static bool parse_function_body(parser_t *parser, ast_value *var) } } - if (var->argcounter) { - ast_value *argc = ast_value_new(ast_ctx(var), var->argcounter, TYPE_FLOAT); - ast_block_collect(block, (ast_expression*)argc); - parser_addlocal(parser, argc->name, (ast_expression*)argc); - } - func = ast_function_new(ast_ctx(var), var->name, var); if (!func) { parseerror(parser, "failed to allocate function for `%s`", var->name); @@ -4012,6 +4006,12 @@ static bool parse_function_body(parser_t *parser, ast_value *var) } vec_push(parser->functions, func); + if (var->argcounter) { + ast_value *argc = ast_value_new(ast_ctx(var), var->argcounter, TYPE_FLOAT); + parser_addlocal(parser, argc->name, (ast_expression*)argc); + func->argc = argc; + } + if (var->expression.flags & AST_FLAG_VARIADIC) { char name[1024]; ast_value *varargs = ast_value_new(ast_ctx(var), "reserved:va_args", TYPE_ARRAY);