aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2015-12-22 13:22:40 -0700
committerAndrew Kelley <superjoe30@gmail.com>2015-12-22 13:22:40 -0700
commit431170d981edf1eba790cefe0f27a6142634ea1d (patch)
tree67f8d09417dd0bb151f0b22ac9fa52e90f2664aa /src/analyze.cpp
parent437e9b954d8a47a1acb6aa5327c6473ab8d9267c (diff)
downloadzig-431170d981edf1eba790cefe0f27a6142634ea1d.tar.gz
zig-431170d981edf1eba790cefe0f27a6142634ea1d.zip
codegen: fix struct pointer field access
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index 62e4e5d606..de71673c49 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -273,10 +273,14 @@ static void preview_function_labels(CodeGen *g, AstNode *node, FnTableEntry *fn_
static void resolve_struct_type(CodeGen *g, ImportTableEntry *import, TypeTableEntry *struct_type) {
assert(struct_type->id == TypeTableEntryIdStruct);
+ if (struct_type->data.structure.fields) {
+ // we already resolved this type. skip
+ return;
+ }
+
AstNode *decl_node = struct_type->data.structure.decl_node;
assert(struct_type->di_type);
- assert(!struct_type->data.structure.fields);
int field_count = decl_node->data.struct_decl.fields.length;
struct_type->data.structure.field_count = field_count;