╭ changed ────╮ │src/event.zig│ ╰─────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2168 switch (cursor.slot().tag) { │ │2169 .bytes, .short_bytes => { │ │2170 const name = try cursor.readBytesAlloc(arena.allocator(), null); │ │2168 - inline for (union_info.fields) |variant| { │ │2169 - if (variant.type == void and std.mem.eql(u8, name, variant.name)) { │ │2170 - return @unionInit(Field, variant.name, {}); │ │2171 + inline for (union_info.field_names, union_info.field_types) |variant_name, variant_type| {│ │2172 + if (variant_type == void and std.mem.eql(u8, name, variant_name)) { │ │2173 + return @unionInit(Field, variant_name, {}); │ │2174 } │ │2175 } │ │2176 return error.InvalidUnion; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2181 const entry = (try iter.next()) orelse return error.InvalidUnion; │ │2182 const pair = try entry.readKeyValuePair(); │ │2183 if (try iter.next() != null) return error.InvalidUnion; │ │2181 - inline for (union_info.fields) |variant| { │ │2182 - if (variant.type != void and pair.hash == hash.hashInt(hash_kind, variant.name)) { │ │2183 - return @unionInit(Field, variant.name, try readField(variant.type, DB, hash_kind, arena, pair.value_cursor));│ │2184 + inline for (union_info.field_names, union_info.field_types) |variant_name, variant_type| { │ │2185 + if (variant_type != void and pair.hash == hash.hashInt(hash_kind, variant_name)) { │ │2186 + return @unionInit(Field, variant_name, try readField(variant_type, DB, hash_kind, arena, pair.value_cursor));│ │2187 } │ │2188 } │ │2189 return error.InvalidUnion; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2200 fn fieldsEqual(comptime T: type, a: T, b: T) bool { │ │2201 switch (@typeInfo(T)) { │ │2202 .@"struct" => |struct_info| { │ │2200 - inline for (struct_info.fields) |field| { │ │2201 - if (!fieldEqual(field.type, @field(a, field.name), @field(b, field.name))) return false;│ │2203 + inline for (struct_info.field_names, struct_info.field_types) |field_name, field_type| { │ │2204 + if (!fieldEqual(field_type, @field(a, field_name), @field(b, field_name))) return false;│ │2205 } │ │2206 }, │ │2207 else => @compileError("fieldsEqual expects a struct"), │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │2259 ) !void { │ │2260 switch (@typeInfo(T)) { │ │2261 .@"struct" => |struct_info| { │ │2259 - inline for (struct_info.fields) |field| { │ │2260 - try upsertField(DB, hash_kind, map, field.name, field.type, @field(event, field.name));│ │2262 + inline for (struct_info.field_names, struct_info.field_types) |field_name, field_type| { │ │2263 + try upsertField(DB, hash_kind, map, field_name, field_type, @field(event, field_name));│ │2264 } │ │2265 }, │ │2266 else => @compileError("upsert expects a struct"), │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯