diff options
| author | Chris Boesch <chrboesch@noreply.codeberg.org> | 2026-03-13 18:18:50 +0100 |
|---|---|---|
| committer | Chris Boesch <chrboesch@noreply.codeberg.org> | 2026-03-13 18:18:50 +0100 |
| commit | e6d93d731a6d3b3366e6cb80df3b1a4cf22a81f3 (patch) | |
| tree | b1d2c108a0fcb0c88c4f388d44aa9bb769bb12bc /patches | |
| parent | 1de4e140963df3a038330ab9efb74cc747ae5219 (diff) | |
| parent | 16a794fbeef0c1d98069dc825e55af38945b5165 (diff) | |
Merge pull request 'Add exercises for packed structs/unions' (#374) from justusk/ziglings:packed into main
Reviewed-on: https://codeberg.org/ziglings/exercises/pulls/374
Diffstat (limited to 'patches')
| -rw-r--r-- | patches/patches/111_packed.patch | 57 | ||||
| -rw-r--r-- | patches/patches/112_packed2.patch | 32 |
2 files changed, 89 insertions, 0 deletions
diff --git a/patches/patches/111_packed.patch b/patches/patches/111_packed.patch new file mode 100644 index 0000000..d38ac68 --- /dev/null +++ b/patches/patches/111_packed.patch @@ -0,0 +1,57 @@ +--- exercises/111_packed.zig 2026-03-13 11:18:44 ++++ answers/111_packed.zig 2026-03-13 11:18:57 +@@ -41,7 +41,7 @@ + + const PackedStruct = packed struct { + a: u2, +- b: u?, ++ b: u4, + }; + + comptime { +@@ -50,7 +50,7 @@ + + const PackedUnion = packed union { + a: bool, +- b: u?, ++ b: u1, + }; + + comptime { +@@ -113,31 +113,31 @@ + pub fn main() void { + { + const expected: Bits = @bitCast(@as(u4, 0b1000)); +- const my_bits: Bits = .{}; ++ const my_bits: Bits = .{ .d = 1 }; + if (my_bits != expected) complain(my_bits, expected, @src()); + } + + { + const expected: Bits = @bitCast(@as(u4, 0b0001)); +- const my_bits: Bits = .{}; ++ const my_bits: Bits = .{ .a = 1 }; + if (my_bits != expected) complain(my_bits, expected, @src()); + } + + { + const expected: Bits = @bitCast(@as(u4, 0b0010)); +- const my_bits: Bits = .{}; ++ const my_bits: Bits = .{ .b = 1 }; + if (my_bits != expected) complain(my_bits, expected, @src()); + } + + { + const expected: Bits = @bitCast(@as(u4, 0b0011)); +- const my_bits: Bits = .{}; ++ const my_bits: Bits = .{ .a = 1, .b = 1 }; + if (my_bits != expected) complain(my_bits, expected, @src()); + } + + { + const expected: Bits = @bitCast(@as(u4, 0b1101)); +- const my_bits: Bits = .{}; ++ const my_bits: Bits = .{ .a = 1, .c = 1, .d = 1 }; + if (my_bits != expected) complain(my_bits, expected, @src()); + } + } diff --git a/patches/patches/112_packed2.patch b/patches/patches/112_packed2.patch new file mode 100644 index 0000000..9b01eb3 --- /dev/null +++ b/patches/patches/112_packed2.patch @@ -0,0 +1,32 @@ +--- exercises/112_packed2.zig 2026-03-13 11:14:08 ++++ answers/112_packed2.zig 2026-03-13 11:14:16 +@@ -13,9 +13,9 @@ + const s: S = .{ .a = true, .b = -1 }; + switch (s) { + .{ .a = true, .b = -1 } => {}, // ok! +- .{ .a = true, .b = ??? }, +- .{ .a = ???, .b = 0 }, +- .{ .a = ???, .b = ??? }, ++ .{ .a = true, .b = 0 }, ++ .{ .a = false, .b = 0 }, ++ .{ .a = false, .b = -1 }, + => @compileError("We don't want to end up here!"), + } + } +@@ -39,7 +39,6 @@ + .{ .a = 3 } => {}, // ok! + .{ .a = 2 }, + .{ .b = 1 }, +- .{ .b = -1 }, + .{ .a = 0 }, + => @compileError("We don't want to end up here!"), + } +@@ -65,7 +64,7 @@ + // Reminder: if the sign bit of a float is set, the number is negative! + + var number: Float = .{ .value = 2.34 }; +- number.bits.??? = ???; ++ number.bits.sign = 1; + if (number.value != -2.34) { + std.debug.print("Make it negative!\n", .{}); + } |
