From f2a24b48e1221a8954ddf16e9070e1470ee13e8d Mon Sep 17 00:00:00 2001 From: kcbanner Date: Sat, 23 Sep 2023 13:03:03 -0400 Subject: sema: rework the comptime representation of comptime unions When the tag is not known, it's set to `.none`. In this case, the value is either an array of bytes (for extern unions) or an integer (for packed unions). --- src/codegen.zig | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index f34c97e6e5..13aefaa8e5 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -583,10 +583,7 @@ pub fn generateSymbol( } const union_obj = mod.typeToUnion(typed_value.ty).?; - const field_index = typed_value.ty.unionTagFieldIndex(un.tag.toValue(), mod) orelse f: { - assert(union_obj.getLayout(ip) == .Extern); - break :f mod.unionLargestField(union_obj).index; - }; + const field_index = typed_value.ty.unionTagFieldIndex(un.tag.toValue(), mod).?; const field_ty = union_obj.field_types.get(ip)[field_index].toType(); if (!field_ty.hasRuntimeBits(mod)) { -- cgit v1.2.3