authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-06-23 09:09:43-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-07-27 14:35:12-04:00
log9e7f40db3a83242e12db853431cea0701446f5fb
tree99b7c0dab4f6d4389b487ecc3c187cc60d8fa181
parente26a70cb96bbdeb633314dec8afa9daf3029b894

InternPool: update `Tag.encodings` to fix lldb pretty printing


3 files changed, 30 insertions(+), 30 deletions(-)

lib/std/hash_map.zig+1-1
...@@ -1518,7 +1518,7 @@ fn Custom(...@@ -1518,7 +1518,7 @@ fn Custom(
1518 self.available = 0;1518 self.available = 0;
1519 }1519 }
15201520
1521 /// This function is used in the debugger pretty formatters in tools/ to fetch the1521 /// This function is used in the debugger pretty formatters in lib/lldb/ to fetch the
1522 /// header type to facilitate fancy debug printing for this type.1522 /// header type to facilitate fancy debug printing for this type.
1523 fn dbHelper(self: *Self, hdr: *Header, entry: *Entry) void {1523 fn dbHelper(self: *Self, hdr: *Header, entry: *Entry) void {
1524 _ = self;1524 _ = self;
lib/std/multi_array_list.zig+2-2
...@@ -163,7 +163,7 @@ pub fn MultiArrayList(comptime T: type) type {...@@ -163,7 +163,7 @@ pub fn MultiArrayList(comptime T: type) type {
163 };163 };
164 }164 }
165165
166 /// This function is used in the debugger pretty formatters in tools/ to fetch the166 /// This function is used in the debugger pretty formatters in lib/lldb/ to fetch the
167 /// child field order and entry type to facilitate fancy debug printing for this type.167 /// child field order and entry type to facilitate fancy debug printing for this type.
168 fn dbHelper(self: *Slice, child: *Elem, field: *Field, entry: *Entry) void {168 fn dbHelper(self: *Slice, child: *Elem, field: *Field, entry: *Entry) void {
169 _ = self;169 _ = self;
...@@ -681,7 +681,7 @@ pub fn MultiArrayList(comptime T: type) type {...@@ -681,7 +681,7 @@ pub fn MultiArrayList(comptime T: type) type {
681 }681 }
682 break :entry @Struct(.@"extern", null, &entry_field_names, &entry_field_types, &entry_field_attrs);682 break :entry @Struct(.@"extern", null, &entry_field_names, &entry_field_types, &entry_field_attrs);
683 };683 };
684 /// This function is used in the debugger pretty formatters in tools/ to fetch the684 /// This function is used in the debugger pretty formatters in lib/lldb/ to fetch the
685 /// child field order and entry type to facilitate fancy debug printing for this type.685 /// child field order and entry type to facilitate fancy debug printing for this type.
686 fn dbHelper(self: *Self, child: *Elem, field: *Field, entry: *Entry) void {686 fn dbHelper(self: *Self, child: *Elem, field: *Field, entry: *Entry) void {
687 _ = self;687 _ = self;
src/InternPool.zig+27-27
...@@ -4193,7 +4193,7 @@ pub const Index = enum(u32) {...@@ -4193,7 +4193,7 @@ pub const Index = enum(u32) {
4193 };4193 };
4194 }4194 }
41954195
4196 /// This function is used in the debugger pretty formatters in tools/ to fetch the4196 /// This function is used in the debugger pretty formatters in lib/lldb/ to fetch the
4197 /// Tag to encoding mapping to facilitate fancy debug printing for this type.4197 /// Tag to encoding mapping to facilitate fancy debug printing for this type.
4198 fn dbHelper(self: *Index, tag_to_encoding_map: *struct {4198 fn dbHelper(self: *Index, tag_to_encoding_map: *struct {
4199 const DataIsIndex = struct { data: Index };4199 const DataIsIndex = struct { data: Index };
...@@ -4219,26 +4219,17 @@ pub const Index = enum(u32) {...@@ -4219,26 +4219,17 @@ pub const Index = enum(u32) {
4219 type_inferred_error_set: DataIsIndex,4219 type_inferred_error_set: DataIsIndex,
4220 simple_type: void,4220 simple_type: void,
4221 type_function: struct {4221 type_function: struct {
4222 const @"data.flags.has_comptime_bits" = opaque {};
4223 const @"data.flags.has_noalias_bits" = opaque {};
4224 const @"data.flags.cc.extraLen()" = opaque {};
4225 const @"data.params_len" = opaque {};4222 const @"data.params_len" = opaque {};
4226 data: *Tag.TypeFunction,4223 data: *Tag.TypeFunction,
4227 @"trailing.comptime_bits.len": *@"data.flags.has_comptime_bits",
4228 @"trailing.noalias_bits.len": *@"data.flags.has_noalias_bits",
4229 @"trailing.cc_bits.len": *@"data.flags.cc.extraLen()",
4230 @"trailing.param_types.len": *@"data.params_len",4224 @"trailing.param_types.len": *@"data.params_len",
4231 trailing: struct { comptime_bits: []u32, noalias_bits: []u32, cc_bits: []u32, param_types: []Index },4225 trailing: struct { param_types: []Index },
4232 },4226 },
4233 type_tuple: struct {4227 type_tuple: struct {
4234 const @"data.fields_len" = opaque {};4228 const @"data.fields_len" = opaque {};
4235 data: *TypeTuple,4229 data: *TypeTuple,
4236 @"trailing.types.len": *@"data.fields_len",4230 @"trailing.types.len": *@"data.fields_len",
4237 @"trailing.values.len": *@"data.fields_len",4231 @"trailing.values.len": *@"data.fields_len",
4238 trailing: struct {4232 trailing: struct { types: []Index, values: []Index },
4239 types: []Index,
4240 values: []Index,
4241 },
4242 },4233 },
42434234
4244 type_struct: struct { data: *Tag.TypeStruct },4235 type_struct: struct { data: *Tag.TypeStruct },
...@@ -4350,7 +4341,7 @@ pub const Index = enum(u32) {...@@ -4350,7 +4341,7 @@ pub const Index = enum(u32) {
4350 const encoding = @field(Tag.encodings, tag_name);4341 const encoding = @field(Tag.encodings, tag_name);
4351 if (@hasField(@TypeOf(encoding), "trailing")) {4342 if (@hasField(@TypeOf(encoding), "trailing")) {
4352 const trailing_info = @typeInfo(encoding.trailing).@"struct";4343 const trailing_info = @typeInfo(encoding.trailing).@"struct";
4353 for (trailing_info.field_names, trailing_info.field_types) |field_name, field_type| {4344 for (trailing_info.field_names, trailing_info.field_types) |trailing_field_name, trailing_field_type| {
4354 struct {4345 struct {
4355 fn checkConfig(name: []const u8) void {4346 fn checkConfig(name: []const u8) void {
4356 if (!@hasField(@TypeOf(encoding.config), name)) @compileError("missing field: " ++ @typeName(Tag) ++ ".encodings." ++ tag_name ++ ".config.@\"" ++ name ++ "\"");4347 if (!@hasField(@TypeOf(encoding.config), name)) @compileError("missing field: " ++ @typeName(Tag) ++ ".encodings." ++ tag_name ++ ".config.@\"" ++ name ++ "\"");
...@@ -4359,22 +4350,30 @@ pub const Index = enum(u32) {...@@ -4359,22 +4350,30 @@ pub const Index = enum(u32) {
4359 }4350 }
4360 fn checkField(name: []const u8, Type: type) void {4351 fn checkField(name: []const u8, Type: type) void {
4361 switch (@typeInfo(Type)) {4352 switch (@typeInfo(Type)) {
4362 .int => {},4353 .int, .@"enum" => return,
4363 .@"enum" => {},4354 .@"struct" => |info| switch (info.layout) {
4364 .@"struct" => |info| assert(info.layout == .@"packed"),4355 .auto => unreachable,
4356 .@"extern" => {
4357 for (info.field_names, info.field_types) |field_name, field_type| checkField(name ++ "." ++ field_name, field_type);
4358 return;
4359 },
4360 .@"packed" => return,
4361 },
4365 .optional => |info| {4362 .optional => |info| {
4366 checkConfig(name ++ ".?");4363 checkConfig(name ++ ".?");
4367 checkField(name ++ ".?", info.child);4364 checkField(name ++ ".?", info.child);
4365 return;
4368 },4366 },
4369 .pointer => |info| {4367 .pointer => |info| if (info.size == .slice) {
4370 assert(info.size == .slice);
4371 checkConfig(name ++ ".len");4368 checkConfig(name ++ ".len");
4372 checkField(name ++ "[0]", info.child);4369 checkField(name ++ "[0]", info.child);
4370 return;
4373 },4371 },
4374 else => @compileError("unsupported type: " ++ @typeName(Tag) ++ ".encodings." ++ tag_name ++ "." ++ name ++ ": " ++ @typeName(Type)),4372 else => {},
4375 }4373 }
4374 @compileError("unsupported type: " ++ @typeName(Tag) ++ ".encodings." ++ tag_name ++ "." ++ name ++ ": " ++ @typeName(Type));
4376 }4375 }
4377 }.checkField("trailing." ++ field_name, field_type);4376 }.checkField("trailing." ++ trailing_field_name, trailing_field_type);
4378 }4377 }
4379 }4378 }
4380 },4379 },
...@@ -5186,17 +5185,18 @@ pub const Tag = enum(u8) {...@@ -5186,17 +5185,18 @@ pub const Tag = enum(u8) {
5186 .trailing = struct {5185 .trailing = struct {
5187 param_comptime_bits: ?[]u32,5186 param_comptime_bits: ?[]u32,
5188 param_noalias_bits: ?[]u32,5187 param_noalias_bits: ?[]u32,
5189 param_cc_bits: ?[]u32,5188 spirv_kernel_options: ?extern struct { x: u32, y: u32, z: u32 },
5190 param_type: []Index,5189 spirv_mesh_options: ?extern struct { max_primitives: u32, max_vertices: u32 },
5190 param_types: []Index,
5191 },5191 },
5192 .config = .{5192 .config = .{
5193 .@"trailing.param_comptime_bits.?" = .@"payload.flags.has_comptime_bits",5193 .@"trailing.param_comptime_bits.?" = .@"payload.flags.has_comptime_bits",
5194 .@"trailing.param_comptime_bits.?.len" = .@"(payload.params_len + 31) / 32",5194 .@"trailing.param_comptime_bits.?.len" = .@"(payload.params_len + 31) / 32",
5195 .@"trailing.param_noalias_bits.?" = .@"payload.flags.has_noalias_bits",5195 .@"trailing.param_noalias_bits.?" = .@"payload.flags.has_noalias_bits",
5196 .@"trailing.param_noalias_bits.?.len" = .@"(payload.params_len + 31) / 32",5196 .@"trailing.param_noalias_bits.?.len" = .@"(payload.params_len + 31) / 32",
5197 .@"trailing.param_cc_bits.?" = .@"payload.flags.cc.extraLen() != 0",5197 .@"trailing.spirv_kernel_options.?" = .@"payload.flags.cc.tag == .spirv_kernel or payload.flags.cc.tag == .spirv_task",
5198 .@"trailing.param_cc_bits.?.len" = .@"payload.flags.cc.extraLen()",5198 .@"trailing.spirv_mesh_options.?" = .@"payload.flags.cc.tag == .spirv_mesh",
5199 .@"trailing.param_type.len" = .@"payload.params_len",5199 .@"trailing.param_types.len" = .@"payload.params_len",
5200 },5200 },
5201 },5201 },
52025202
...@@ -5225,7 +5225,7 @@ pub const Tag = enum(u8) {...@@ -5225,7 +5225,7 @@ pub const Tag = enum(u8) {
5225 .@"trailing.field_defaults.?" = .@"payload.flags.any_field_defaults",5225 .@"trailing.field_defaults.?" = .@"payload.flags.any_field_defaults",
5226 .@"trailing.field_defaults.?.len" = .@"payload.fields_len",5226 .@"trailing.field_defaults.?.len" = .@"payload.fields_len",
5227 .@"trailing.field_aligns.?" = .@"payload.flags.any_field_aligns",5227 .@"trailing.field_aligns.?" = .@"payload.flags.any_field_aligns",
5228 .@"trailing.field_aligns.?.len" = .@"payload.fields_len",5228 .@"trailing.field_aligns.?.len" = .@"(payload.fields_len + 3) / 4",
5229 .@"trailing.field_is_comptime_bits.?" = .@"payload.flags.any_comptime_fields",5229 .@"trailing.field_is_comptime_bits.?" = .@"payload.flags.any_comptime_fields",
5230 .@"trailing.field_is_comptime_bits.?.len" = .@"(payload.fields_len + 31) / 32",5230 .@"trailing.field_is_comptime_bits.?.len" = .@"(payload.fields_len + 31) / 32",
5231 .@"trailing.field_runtime_order.?" = .@"payload.flags.layout == .auto",5231 .@"trailing.field_runtime_order.?" = .@"payload.flags.layout == .auto",
...@@ -5254,7 +5254,7 @@ pub const Tag = enum(u8) {...@@ -5254,7 +5254,7 @@ pub const Tag = enum(u8) {
5254 .@"trailing.captures.?.len" = .@"trailing.captures_len.?",5254 .@"trailing.captures.?.len" = .@"trailing.captures_len.?",
5255 .@"trailing.field_types.len" = .@"payload.fields_len",5255 .@"trailing.field_types.len" = .@"payload.fields_len",
5256 .@"trailing.field_aligns.?" = .@"payloads.flags.any_field_aligns",5256 .@"trailing.field_aligns.?" = .@"payloads.flags.any_field_aligns",
5257 .@"trailing.field_aligns.?.len" = .@"payload.fields_len",5257 .@"trailing.field_aligns.?.len" = .@"(payload.fields_len + 3) / 4",
5258 },5258 },
5259 },5259 },
5260 .type_union_packed_auto = union_packed_encoding,5260 .type_union_packed_auto = union_packed_encoding,