aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-07-12 23:53:34 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-07-12 23:53:34 +0100
commitaa6a2caecb759522914ba82cc506e60270ad1ab0 (patch)
tree68a5cf5479606bc1b10deb4cf63af01e7e513136 /src/parser.cpp
parent9f90ff50cf4f93e6c6bb622bc2098dc7cea7f240 (diff)
Random Order File Scope Declaration
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index d9f4928f1..050a69894 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -310,8 +310,12 @@ Token ast_node_token(AstNode *node) {
return node->procedure_declaration.name->identifier.token;
case AstNode_TypeDeclaration:
return node->type_declaration.token;
- case AstNode_Field:
- return ast_node_token(node->field.name_list);
+ case AstNode_Field: {
+ if (node->field.name_list)
+ return ast_node_token(node->field.name_list);
+ else
+ return ast_node_token(node->field.type_expression);
+ }
case AstNode_ProcedureType:
return node->procedure_type.token;
case AstNode_PointerType:
@@ -1330,9 +1334,9 @@ AstNode *parse_results(Parser *p, AstScope *scope, isize *result_count) {
return list;
}
- AstNode *field = make_field(p, NULL, 0, parse_type(p));
+ AstNode *result = parse_type(p);
if (result_count) *result_count = 1;
- return field;
+ return result;
}
if (result_count) *result_count = 0;
return NULL;