about summary refs log tree commit diff
path: root/boot/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'boot/parse.c')
-rw-r--r--boot/parse.c9
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