Commit ff7e826b82

Andrew Kelley <andrew@ziglang.org>
2019-08-16 00:54:23
fix crash with sometimes type not being resolved
1 parent 0b08ae5
Changed files (2)
src
test
stage1
behavior
src/codegen.cpp
@@ -7004,6 +7004,8 @@ static void do_code_gen(CodeGen *g) {
                 ZigType *ptr_type = instruction->base.value.type;
                 assert(ptr_type->id == ZigTypeIdPointer);
                 ZigType *child_type = ptr_type->data.pointer.child_type;
+                if (type_resolve(g, child_type, ResolveStatusSizeKnown))
+                    zig_unreachable();
                 if (!type_has_bits(child_type))
                     continue;
                 if (instruction->base.ref_count == 0)
@@ -7015,6 +7017,8 @@ static void do_code_gen(CodeGen *g) {
                         continue;
                     }
                 }
+                if (type_resolve(g, child_type, ResolveStatusLLVMFull))
+                    zig_unreachable();
                 instruction->base.llvm_value = build_alloca(g, child_type, instruction->name_hint,
                         get_ptr_align(g, ptr_type));
             }
test/stage1/behavior/async_fn.zig
@@ -734,3 +734,10 @@ test "alignment of local variables in async functions" {
     };
     S.doTheTest();
 }
+
+test "no reason to resolve frame still works" {
+    _ = async simpleNothing();
+}
+fn simpleNothing() void {
+    var x: i32 = 1234;
+}