Corrected default value field initialization in std.zeroInit

This commit is contained in:
Alexandros Naskos 2020-07-01 00:33:35 +03:00 committed by Andrew Kelley
parent b8d5b3e611
commit 30ae7f7573

View File

@ -720,8 +720,8 @@ pub fn zeroInit(comptime T: type, init: var) T {
@field(value, field.name) = @field(init, field.name); @field(value, field.name) = @field(init, field.name);
}, },
} }
} else if (field.default_value != null) { } else if (field.default_value) |default_value| {
@field(value, field.name) = field.default_value; @field(value, field.name) = default_value;
} }
} }
@ -748,7 +748,7 @@ test "zeroInit" {
b: ?bool, b: ?bool,
c: I, c: I,
e: [3]u8, e: [3]u8,
f: i64, f: i64 = -1,
}; };
const s = zeroInit(S, .{ const s = zeroInit(S, .{
@ -762,7 +762,7 @@ test "zeroInit" {
.d = 0, .d = 0,
}, },
.e = [3]u8{ 0, 0, 0 }, .e = [3]u8{ 0, 0, 0 },
.f = 0, .f = -1,
}); });
} }