Commit b52948444f

Cody Tapscott <topolarity@tapscott.me>
2022-02-27 09:53:56
stage2: Resolve union layout before getting tag type in zirTagname
This bug only causes a failure on my machine when running test/behavior/eval.zig directly. If running the full behavior test suite, std.builtin.TypeInfo will have already resolved its layout, causing the test to pass. I'd love to add a test that can reliably reproduce this problem, but I'm afraid I'm not sure how to reliably create a union with un-resolved layout.
1 parent 4d658f8
Changed files (1)
src/Sema.zig
@@ -11837,6 +11837,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
     const operand = sema.resolveInst(inst_data.operand);
     const operand_ty = sema.typeOf(operand);
 
+    try sema.resolveTypeLayout(block, operand_src, operand_ty);
     const enum_ty = switch (operand_ty.zigTypeTag()) {
         .EnumLiteral => {
             const val = try sema.resolveConstValue(block, operand_src, operand);