summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuka Markušić <markusicluka@gmail.com>2026-06-01 15:29:58 +0200
committerLuka Markušić <markusicluka@gmail.com>2026-06-01 15:34:01 +0200
commit4480762e83f9c9f56a397b743a3d5867e1abf499 (patch)
tree4cf38fe4818aa8fd85ae4702fe0cbd62d3401aa6
parent4ce3ed23f3f01125fb233e91240bcc793ba6d46c (diff)
Fix 065_builtins2.zig because of new build system
-rw-r--r--exercises/065_builtins2.zig33
-rw-r--r--patches/patches/065_builtins2.patch28
2 files changed, 27 insertions, 34 deletions
diff --git a/exercises/065_builtins2.zig b/exercises/065_builtins2.zig
index eb8f3aa..78cd23b 100644
--- a/exercises/065_builtins2.zig
+++ b/exercises/065_builtins2.zig
@@ -93,36 +93,25 @@ pub fn main() void {
print("He has room in his heart for:", .{});
- // A StructFields array
- const fields = @typeInfo(Narcissus).@"struct".fields;
+ // `field_names` is a slice of strings and it holds the names of the struct's fields
+ // `field_types` is a slice of strings and it holds the types of the struct's fields,
+ // it is guaranteed to be the same length as `field_names`
+ const field_names = @typeInfo(Narcissus).@"struct".field_names;
+ const field_types = @typeInfo(Narcissus).@"struct".field_types;
- // 'fields' is a slice of StructFields. Here's the declaration:
- //
- // pub const StructField = struct {
- // name: [:0]const u8, // Don't worry about `:0` yet!
- // type: type,
- // default_value_ptr: ?*const anyopaque,
- // is_comptime: bool,
- // alignment: comptime_int,
- //
- // defaultValue() ?sf.type // Function that loads the
- // // field's default value from
- // // `default_value_ptr`
- // };
- //
// Please complete these 'if' statements so that the field
// name will not be printed if the field is of type 'void'
// (which is a zero-bit type that takes up no space at all!):
- if (fields[0].??? != void) {
- print(" {s}", .{fields[0].name});
+ if (field_???[???] != void) {
+ print(" {s}", .{field_???[???]});
}
- if (fields[1].??? != void) {
- print(" {s}", .{fields[1].name});
+ if (field_???[???] != void) {
+ print(" {s}", .{field_???[???]});
}
- if (fields[2].??? != void) {
- print(" {s}", .{fields[2].name});
+ if (field_???[???] != void) {
+ print(" {s}", .{field_???[???]});
}
// Yuck, look at all that repeated code above! I don't know
diff --git a/patches/patches/065_builtins2.patch b/patches/patches/065_builtins2.patch
index 89fd652..c011646 100644
--- a/patches/patches/065_builtins2.patch
+++ b/patches/patches/065_builtins2.patch
@@ -1,5 +1,5 @@
---- exercises/065_builtins2.zig 2026-02-27 13:10:36
-+++ answers/065_builtins2.zig 2026-02-27 13:10:52
+--- exercises/065_builtins2.zig 2026-06-01 15:33:16.617432671 +0200
++++ answers/065_builtins2.zig 2026-06-01 15:33:31.104018108 +0200
@@ -58,7 +58,7 @@
// Oops! We cannot leave the 'me' and 'myself' fields
// undefined. Please set them here:
@@ -18,22 +18,26 @@
// Now we print a pithy statement about Narcissus.
print("A {s} loves all {s}es. ", .{
-@@ -113,15 +113,15 @@
+@@ -102,16 +102,16 @@
// Please complete these 'if' statements so that the field
// name will not be printed if the field is of type 'void'
// (which is a zero-bit type that takes up no space at all!):
-- if (fields[0].??? != void) {
-+ if (fields[0].type != void) {
- print(" {s}", .{fields[0].name});
+- if (field_???[???] != void) {
+- print(" {s}", .{field_???[???]});
++ if (field_types[0] != void) {
++ print(" {s}", .{field_names[0]});
}
-- if (fields[1].??? != void) {
-+ if (fields[1].type != void) {
- print(" {s}", .{fields[1].name});
+- if (field_???[???] != void) {
+- print(" {s}", .{field_???[???]});
++ if (field_types[1] != void) {
++ print(" {s}", .{field_names[1]});
}
-- if (fields[2].??? != void) {
-+ if (fields[2].type != void) {
- print(" {s}", .{fields[2].name});
+- if (field_???[???] != void) {
+- print(" {s}", .{field_???[???]});
++ if (field_types[2] != void) {
++ print(" {s}", .{field_names[2]});
}
+ // Yuck, look at all that repeated code above! I don't know