diff options
Diffstat (limited to 'src/check_type.cpp')
| -rw-r--r-- | src/check_type.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp index 1acf379a7..65a546e5e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -27,6 +27,9 @@ void populate_using_array_index(CheckerContext *ctx, Ast *node, AstField *field, } void populate_using_entity_scope(CheckerContext *ctx, Ast *node, AstField *field, Type *t) { + if (t == nullptr) { + return; + } t = base_type(type_deref(t)); gbString str = nullptr; defer (gb_string_free(str)); @@ -40,7 +43,7 @@ void populate_using_entity_scope(CheckerContext *ctx, Ast *node, AstField *field GB_ASSERT(f->kind == Entity_Variable); String name = f->token.string; Entity *e = scope_lookup_current(ctx->scope, name); - if (e != nullptr && name != "_" && e != f) { + if (e != nullptr && name != "_") { // TODO(bill): Better type error if (str != nullptr) { error(e->token, "'%.*s' is already declared in '%s'", LIT(name), str); @@ -59,7 +62,7 @@ void populate_using_entity_scope(CheckerContext *ctx, Ast *node, AstField *field Entity *f = t->BitField.fields[i]; String name = f->token.string; Entity *e = scope_lookup_current(ctx->scope, name); - if (e != nullptr && name != "_" && e != f) { + if ((e != nullptr && name != "_") && (e != f)) { // TODO(bill): Better type error if (str != nullptr) { error(e->token, "'%.*s' is already declared in '%s'", LIT(name), str); |