diff options
| author | Mel <mel@rnrd.eu> | 2025-07-06 03:32:07 +0200 |
|---|---|---|
| committer | Mel <mel@rnrd.eu> | 2025-07-06 03:32:07 +0200 |
| commit | ebd176b8e7eb14060375a28d6ac50500d9d2c808 (patch) | |
| tree | 6c79ac631b5b8a4c025c09940a4a0fb1c71dd129 /boot/parse.c | |
| parent | 620d82a5e314a82784e02b4af387a67d53242149 (diff) | |
| download | catskill-ebd176b8e7eb14060375a28d6ac50500d9d2c808.tar.zst catskill-ebd176b8e7eb14060375a28d6ac50500d9d2c808.zip | |
Parse variadic parameters in function definitions
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'boot/parse.c')
| -rw-r--r-- | boot/parse.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/boot/parse.c b/boot/parse.c index 5d839a8..cd5f019 100644 --- a/boot/parse.c +++ b/boot/parse.c @@ -254,6 +254,13 @@ parser_function_header_node(struct Parser* p, struct Parser_Error* error) struct Function_Header_Node header = { 0 }; while (!parser_probe(p, TOKEN_ROUND_CLOSE)) { + // TODO: correctly output parameter spans + bool variadic = false; + if (parser_probe(p, TOKEN_DOT_DOT_DOT)) { + variadic = true; + parser_next(p); + } + struct Token name_token = CHECK_RETURN(parser_need(p, TOKEN_NAME, error), struct Function_Header_Node); struct String name = name_token.value.name; @@ -266,6 +273,8 @@ parser_function_header_node(struct Parser* p, struct Parser_Error* error) } type->value_name = name; + type->variadic = variadic; + if (!header.parameters_type_and_name) header.parameters_type_and_name = type; else |
