summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuka Markušić <markusicluka@gmail.com>2026-06-01 15:41:22 +0200
committerLuka Markušić <markusicluka@gmail.com>2026-06-01 16:00:27 +0200
commit3b865a0c175e7537aeea389fb5f05c6e3489a685 (patch)
treef46e36f8574008406e8d6deeda4191662c2c1558
parent63c798637cbb8b73ac0348933cc8dc42bfa9810a (diff)
Fix 082_anonymous_structs3.zig because of new build system
-rw-r--r--exercises/082_anonymous_structs3.zig31
-rw-r--r--patches/patches/082_anonymous_structs3.patch36
2 files changed, 29 insertions, 38 deletions
diff --git a/exercises/082_anonymous_structs3.zig b/exercises/082_anonymous_structs3.zig
index c13774f..e99c826 100644
--- a/exercises/082_anonymous_structs3.zig
+++ b/exercises/082_anonymous_structs3.zig
@@ -74,36 +74,27 @@ fn printTuple(tuple: anytype) void {
// @typeInfo() - takes a type, returns a TypeInfo union
// with fields specific to that type.
//
- // The list of a struct type's fields can be found in
- // TypeInfo's @"struct".fields.
+ // The list of a struct type's field types can be found in
+ // TypeInfo's @"struct".field_types.
//
// Example:
//
- // @typeInfo(Circle).@"struct".fields
+ // @typeInfo(Circle).@"struct".field_types
//
- // This will be an array of StructFields.
- const fields = ???;
+ // This will be an array of field types.
+ const field_types = ???;
+
+ // This will be an array of field names.
+ const field_names = ???;
// 2. Loop through each field. This must be done at compile
// time.
//
// Hint: remember 'inline' loops?
//
- for (fields) |field| {
+ for (???, ???) |???, ???| {
// 3. Print the field's name, type, and value.
//
- // Each 'field' in this loop is one of these:
- //
- // pub const StructField = struct {
- // name: [:0]const u8,
- // type: type,
- // default_value_ptr: ?*const anyopaque,
- // is_comptime: bool,
- // alignment: comptime_int,
- // };
- //
- // Note we will learn about 'anyopaque' type later
- //
// You'll need this builtin:
//
// @field(lhs: anytype, comptime field_name: []const u8)
@@ -123,8 +114,8 @@ fn printTuple(tuple: anytype) void {
// for declarations. If it's a value, it looks for data.
//
print("\"{s}\"({any}):{any} ", .{
- field.???,
- field.???,
+ field_name,
+ field_type,
???,
});
}
diff --git a/patches/patches/082_anonymous_structs3.patch b/patches/patches/082_anonymous_structs3.patch
index 28a6728..972753d 100644
--- a/patches/patches/082_anonymous_structs3.patch
+++ b/patches/patches/082_anonymous_structs3.patch
@@ -1,32 +1,32 @@
---- exercises/082_anonymous_structs3.zig 2026-02-27 13:05:46
-+++ answers/082_anonymous_structs3.zig 2026-02-27 13:07:22
-@@ -82,14 +82,14 @@
- // @typeInfo(Circle).@"struct".fields
+--- exercises/082_anonymous_structs3.zig 2026-06-01 15:59:11.872467805 +0200
++++ answers/082_anonymous_structs3.zig 2026-06-01 15:58:38.004730144 +0200
+@@ -82,17 +82,17 @@
+ // @typeInfo(Circle).@"struct".field_types
//
- // This will be an array of StructFields.
-- const fields = ???;
-+ const fields = @typeInfo(@TypeOf(tuple)).@"struct".fields;
+ // This will be an array of field types.
+- const field_types = ???;
++ const field_types = @typeInfo(@TypeOf(tuple)).@"struct".field_types;
+
+ // This will be an array of field names.
+- const field_names = ???;
++ const field_names = @typeInfo(@TypeOf(tuple)).@"struct".field_names;
// 2. Loop through each field. This must be done at compile
// time.
//
// Hint: remember 'inline' loops?
//
-- for (fields) |field| {
-+ inline for (fields) |field| {
+- for (???, ???) |???, ???| {
++ inline for (field_types, field_names) |field_type, field_name| {
// 3. Print the field's name, type, and value.
//
- // Each 'field' in this loop is one of these:
-@@ -123,9 +123,9 @@
- // for declarations. If it's a value, it looks for data.
- //
+ // You'll need this builtin:
+@@ -116,7 +116,7 @@
print("\"{s}\"({any}):{any} ", .{
-- field.???,
-- field.???,
+ field_name,
+ field_type,
- ???,
-+ field.name,
-+ field.type,
-+ @field(tuple, field.name),
++ @field(tuple, field_name),
});
}
}