Implemented C variadic arguments

This commit is contained in:
Krzosa Karol
2023-04-14 22:22:34 +02:00
parent fdcdc8ea86
commit 8c4975db35
9 changed files with 74 additions and 15 deletions

View File

@@ -468,9 +468,14 @@ parse_parameter_list(Arena *arena) {
Array<Ast_Decl *> params = {arena};
if (!token_is(TK_CloseParen)) {
for (;;) {
Token *name = token_get();
if (name->kind == TK_Identifier || name->kind == TK_Polymorph) {
token_next();
Token *name = token_next();
if (name->kind == TK_ThreeDots) {
Ast_Decl *param = ast_new(Ast_Decl, AST_VARGS_LAMBDA_PARAM, name, AST_DECL);
param->name = pctx->intern("..."_s);
params.add(param);
break;
}
else if (name->kind == TK_Identifier || name->kind == TK_Polymorph) {
token_expect(TK_Colon);
Ast_Decl *param = ast_new(Ast_Decl, AST_VAR, name, AST_DECL);