diff --git a/src/Sema.zig b/src/Sema.zig index bd956d32bc..8bf0649cc2 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18232,7 +18232,7 @@ fn zirReify(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData, in var buffer: Value.ToTypeBuffer = undefined; gop.value_ptr.* = .{ .ty = try field_type_val.toType(&buffer).copy(new_decl_arena_allocator), - .abi_align = @intCast(u32, alignment_val.toUnsignedInt(target)), + .abi_align = @intCast(u32, (try alignment_val.getUnsignedIntAdvanced(target, sema.kit(block, src))).?), }; } diff --git a/test/behavior.zig b/test/behavior.zig index 1112f1a661..a92a5fcbf0 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -111,6 +111,7 @@ test { _ = @import("behavior/bugs/13159.zig"); _ = @import("behavior/bugs/13171.zig"); _ = @import("behavior/bugs/13285.zig"); + _ = @import("behavior/bugs/13435.zig"); _ = @import("behavior/byteswap.zig"); _ = @import("behavior/byval_arg_var.zig"); _ = @import("behavior/call.zig"); diff --git a/test/behavior/bugs/13435.zig b/test/behavior/bugs/13435.zig new file mode 100644 index 0000000000..a23735f2f4 --- /dev/null +++ b/test/behavior/bugs/13435.zig @@ -0,0 +1,22 @@ +const std = @import("std"); + +fn CreateUnion(comptime T: type) type { + return @Type(.{ + .Union = .{ + .layout = .Auto, + .tag_type = null, + .fields = &[_]std.builtin.Type.UnionField{ + .{ + .name = "field", + .field_type = T, + .alignment = @alignOf(T), + }, + }, + .decls = &[_]std.builtin.Type.Declaration{}, + }, + }); +} + +test { + _ = CreateUnion(struct {}); +}