| ... | ... | @@ -4193,7 +4193,7 @@ pub const Index = enum(u32) { |
| 4193 | 4193 | }; |
| 4194 | 4194 | } |
| 4195 | 4195 | |
| 4196 | | /// This function is used in the debugger pretty formatters in tools/ to fetch the |
| 4196 | /// This function is used in the debugger pretty formatters in lib/lldb/ to fetch the |
| 4197 | 4197 | /// Tag to encoding mapping to facilitate fancy debug printing for this type. |
| 4198 | 4198 | fn dbHelper(self: *Index, tag_to_encoding_map: *struct { |
| 4199 | 4199 | const DataIsIndex = struct { data: Index }; |
| ... | ... | @@ -4219,26 +4219,17 @@ pub const Index = enum(u32) { |
| 4219 | 4219 | type_inferred_error_set: DataIsIndex, |
| 4220 | 4220 | simple_type: void, |
| 4221 | 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 | 4222 | const @"data.params_len" = opaque {}; |
| 4226 | 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 | 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 | 4227 | type_tuple: struct { |
| 4234 | 4228 | const @"data.fields_len" = opaque {}; |
| 4235 | 4229 | data: *TypeTuple, |
| 4236 | 4230 | @"trailing.types.len": *@"data.fields_len", |
| 4237 | 4231 | @"trailing.values.len": *@"data.fields_len", |
| 4238 | | trailing: struct { |
| 4239 | | types: []Index, |
| 4240 | | values: []Index, |
| 4241 | | }, |
| 4232 | trailing: struct { types: []Index, values: []Index }, |
| 4242 | 4233 | }, |
| 4243 | 4234 | |
| 4244 | 4235 | type_struct: struct { data: *Tag.TypeStruct }, |
| ... | ... | @@ -4350,7 +4341,7 @@ pub const Index = enum(u32) { |
| 4350 | 4341 | const encoding = @field(Tag.encodings, tag_name); |
| 4351 | 4342 | if (@hasField(@TypeOf(encoding), "trailing")) { |
| 4352 | 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 | 4345 | struct { |
| 4355 | 4346 | fn checkConfig(name: []const u8) void { |
| 4356 | 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 | 4350 | } |
| 4360 | 4351 | fn checkField(name: []const u8, Type: type) void { |
| 4361 | 4352 | switch (@typeInfo(Type)) { |
| 4362 | | .int => {}, |
| 4363 | | .@"enum" => {}, |
| 4364 | | .@"struct" => |info| assert(info.layout == .@"packed"), |
| 4353 | .int, .@"enum" => return, |
| 4354 | .@"struct" => |info| switch (info.layout) { |
| 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 | 4362 | .optional => |info| { |
| 4366 | 4363 | checkConfig(name ++ ".?"); |
| 4367 | 4364 | checkField(name ++ ".?", info.child); |
| 4365 | return; |
| 4368 | 4366 | }, |
| 4369 | | .pointer => |info| { |
| 4370 | | assert(info.size == .slice); |
| 4367 | .pointer => |info| if (info.size == .slice) { |
| 4371 | 4368 | checkConfig(name ++ ".len"); |
| 4372 | 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 | 5185 | .trailing = struct { |
| 5187 | 5186 | param_comptime_bits: ?[]u32, |
| 5188 | 5187 | param_noalias_bits: ?[]u32, |
| 5189 | | param_cc_bits: ?[]u32, |
| 5190 | | param_type: []Index, |
| 5188 | spirv_kernel_options: ?extern struct { x: u32, y: u32, z: u32 }, |
| 5189 | spirv_mesh_options: ?extern struct { max_primitives: u32, max_vertices: u32 }, |
| 5190 | param_types: []Index, |
| 5191 | 5191 | }, |
| 5192 | 5192 | .config = .{ |
| 5193 | 5193 | .@"trailing.param_comptime_bits.?" = .@"payload.flags.has_comptime_bits", |
| 5194 | 5194 | .@"trailing.param_comptime_bits.?.len" = .@"(payload.params_len + 31) / 32", |
| 5195 | 5195 | .@"trailing.param_noalias_bits.?" = .@"payload.flags.has_noalias_bits", |
| 5196 | 5196 | .@"trailing.param_noalias_bits.?.len" = .@"(payload.params_len + 31) / 32", |
| 5197 | | .@"trailing.param_cc_bits.?" = .@"payload.flags.cc.extraLen() != 0", |
| 5198 | | .@"trailing.param_cc_bits.?.len" = .@"payload.flags.cc.extraLen()", |
| 5199 | | .@"trailing.param_type.len" = .@"payload.params_len", |
| 5197 | .@"trailing.spirv_kernel_options.?" = .@"payload.flags.cc.tag == .spirv_kernel or payload.flags.cc.tag == .spirv_task", |
| 5198 | .@"trailing.spirv_mesh_options.?" = .@"payload.flags.cc.tag == .spirv_mesh", |
| 5199 | .@"trailing.param_types.len" = .@"payload.params_len", |
| 5200 | 5200 | }, |
| 5201 | 5201 | }, |
| 5202 | 5202 | |
| ... | ... | @@ -5225,7 +5225,7 @@ pub const Tag = enum(u8) { |
| 5225 | 5225 | .@"trailing.field_defaults.?" = .@"payload.flags.any_field_defaults", |
| 5226 | 5226 | .@"trailing.field_defaults.?.len" = .@"payload.fields_len", |
| 5227 | 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 | 5229 | .@"trailing.field_is_comptime_bits.?" = .@"payload.flags.any_comptime_fields", |
| 5230 | 5230 | .@"trailing.field_is_comptime_bits.?.len" = .@"(payload.fields_len + 31) / 32", |
| 5231 | 5231 | .@"trailing.field_runtime_order.?" = .@"payload.flags.layout == .auto", |
| ... | ... | @@ -5254,7 +5254,7 @@ pub const Tag = enum(u8) { |
| 5254 | 5254 | .@"trailing.captures.?.len" = .@"trailing.captures_len.?", |
| 5255 | 5255 | .@"trailing.field_types.len" = .@"payload.fields_len", |
| 5256 | 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 | 5260 | .type_union_packed_auto = union_packed_encoding, |