about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--boot/parse.c3
-rw-r--r--boot/tests/parse/generics.cskt0
-rw-r--r--boot/tests/parse/simple_types.cskt0
-rw-r--r--boot/tree.c1
4 files changed, 3 insertions, 1 deletions
diff --git a/boot/parse.c b/boot/parse.c
index 687659e..6363379 100644
--- a/boot/parse.c
+++ b/boot/parse.c
@@ -445,6 +445,7 @@ parser_function_header_node(struct Parser* p, struct Parser_Error* error)
     struct Token close_parameters_token = parser_next(p);
 
     header.span = span_merge(open_parameters_token.span, close_parameters_token.span);
+    header.location = open_parameters_token.location;
 
     struct Token next = parser_peek(p);
     struct Token further = parser_peek_further(p);
@@ -620,7 +621,7 @@ parser_node_type_class(struct Parser* p, struct Parser_Error* error)
         // for the sake of consistency and the built-in type node linked list.
         struct Type_Node* method_type = type_node_new(
             TYPE_NODE_FUNCTION, (union Type_Node_Value){ .function = { header } }, header.span,
-            header.parameters_type_and_name->location);
+            header.location);
         method_type->value_name = method_name;
 
         if (!head)
diff --git a/boot/tests/parse/generics.cskt b/boot/tests/parse/generics.cskt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/boot/tests/parse/generics.cskt
diff --git a/boot/tests/parse/simple_types.cskt b/boot/tests/parse/simple_types.cskt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/boot/tests/parse/simple_types.cskt
diff --git a/boot/tree.c b/boot/tree.c
index aab05eb..4320279 100644
--- a/boot/tree.c
+++ b/boot/tree.c
@@ -420,6 +420,7 @@ struct Function_Header_Node
     struct Type_Node* return_type;
 
     struct Span span;
+    struct Cursor location;
 };
 
 // a declaration of a variable, constant, or other binding, without a mutability