summaryrefslogtreecommitdiff
path: root/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/parser.c b/parser.c
index b094780..14bbbf5 100644
--- a/parser.c
+++ b/parser.c
@@ -79,13 +79,15 @@ static void parse_type_ref(struct type_ref_node* p_node) {
PARSER_PANIC("unknown type name: %s", tok.data.ident);
free(tok.data.ident);
- p_node->def_ref = type_def;
+ p_node->type = (struct type) {
+ .raw_type = type_def,
+ .ptr_level = 0,
+ };
peek_or_panic();
- p_node->ptr_level = 0;
while (tok.type == TK_STAR) {
expect(TK_STAR);
- p_node->ptr_level++;
+ p_node->type.ptr_level++;
peek_or_panic();
}
}
@@ -278,6 +280,7 @@ static void parse_var_decl(struct var_decl_node* p_node) {
expect(TK_IDENT);
p_node->def_ref = scope_define_var(scope, (struct var_def) {
+ .type = &p_node->type.type,
.name = tok.data.ident,
.loc.type = STO_UNRESOLVED,
});