diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 21:07:25 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-05 21:07:25 +0100 |
| commit | ba238c569a54ac52aa318aa1238be790f941f724 (patch) | |
| tree | 5dea8e913a6f5b21299fb5f5b6b5ed7f5aeed5d0 /src/checker/checker.cpp | |
| parent | 4a303b5c3ef38bd99c36fa990c922917c0134d52 (diff) | |
Strings galore!
Diffstat (limited to 'src/checker/checker.cpp')
| -rw-r--r-- | src/checker/checker.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/checker/checker.cpp b/src/checker/checker.cpp index 1d402abe9..5ae2ec417 100644 --- a/src/checker/checker.cpp +++ b/src/checker/checker.cpp @@ -456,8 +456,9 @@ void add_type_and_value(CheckerInfo *i, AstNode *expression, AddressingMode mode } TypeAndValue tv = {}; - tv.type = type; + tv.type = type; tv.value = value; + tv.mode = mode; map_set(&i->types, hash_pointer(expression), tv); } @@ -522,7 +523,8 @@ void pop_procedure(Checker *c) { } void add_curr_ast_file(Checker *c, AstFile *file) { - gb_zero_item(&c->error_collector); + TokenPos zero_pos = {}; + c->error_collector.prev = zero_pos; c->curr_ast_file = file; } @@ -672,10 +674,12 @@ void check_parsed_files(Checker *c) { u64 key = entry->key; AstNode *expr = cast(AstNode *)cast(uintptr)key; ExpressionInfo *info = &entry->value; - if (is_type_typed(info->type)) { - GB_PANIC("%s (type %s) is typed!", expr_to_string(expr), info->type); + if (info != NULL && expr != NULL) { + if (is_type_typed(info->type)) { + GB_PANIC("%s (type %s) is typed!", expr_to_string(expr), info->type); + } + add_type_and_value(&c->info, expr, info->mode, info->type, info->value); } - add_type_and_value(&c->info, expr, info->mode, info->type, info->value); } } |