From 3b865a0c175e7537aeea389fb5f05c6e3489a685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= Date: Mon, 1 Jun 2026 15:41:22 +0200 Subject: [PATCH] Fix 082_anonymous_structs3.zig because of new build system --- exercises/082_anonymous_structs3.zig | 31 ++++++----------- patches/patches/082_anonymous_structs3.patch | 36 ++++++++++---------- 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), }); } }