Skip to content

Commit f04d938

Browse files
committed
Unpack.nil: allow to call outside of comptime
1 parent 5525836 commit f04d938

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

src/io.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ pub const UnpackReader = struct {
193193

194194
pub const ConvertError = fmt.Unpack.ConvertError;
195195

196-
pub fn nil(self: *UnpackReader, _: anytype, header: fmt.Header) !@TypeOf(null) {
197-
return self.unpack.nil(header);
196+
pub fn nil(self: *UnpackReader, _: anytype, T: type, header: fmt.Header) !T {
197+
return self.unpack.nil(T, header);
198198
}
199199

200200
pub fn @"bool"(self: *UnpackReader, _: anytype, header: fmt.Header) !bool {

src/rewriter.zig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ fn rewriteValue(
1010
h: zigpak.Header,
1111
) !void {
1212
switch (h.type.family()) {
13-
.nil => _ = try zigpak.io.writeNil(writer),
13+
.nil => {
14+
_ = try values.nil(reader, ?*anyopaque, h);
15+
_ = try zigpak.io.writeNil(writer);
16+
},
1417
.bool => _ = try zigpak.io.writeBool(writer, try values.bool(reader, h)),
1518
.int => _ = try zigpak.io.writeIntSm(writer, try values.int(reader, i64, h)),
1619
.uint => _ = try zigpak.io.writeIntSm(writer, try values.int(reader, u64, h)),

src/root.zig

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -826,9 +826,8 @@ pub const Unpack = struct {
826826

827827
/// Consumes the current value as the null.
828828
///
829-
/// Note that the result must be peer resolved to a type
830-
/// with valid representation, like `?*opaque {}`.
831-
pub fn nil(_: *Unpack, header: Header) ConvertError!@TypeOf(null) {
829+
/// The `T` must be optional types.
830+
pub fn nil(_: *Unpack, T: type, header: Header) ConvertError!T {
832831
if (header.type == .nil) {
833832
return null;
834833
}

0 commit comments

Comments
 (0)