authorgravatar for justus@klausecker.deJustus Klausecker <justus@klausecker.de> 2025-08-08 15:30:40+02:00
committergravatar for justus@klausecker.deJustus Klausecker <justus@klausecker.de> 2025-08-12 16:33:58+02:00
log8f5ec2a1fb957f4cd0895064d7ff7534ea306f71
tree847d70912cee052cf68d2f02ab0dfc70458f68d0
parent79756e681d50d85576c890e4dd5c967f10d2e8ec

Sema: replace all remaining aggregate interns related to `@typeInfo`


2 files changed, 26 insertions(+), 101 deletions(-)

src/Sema.zig+25-100
......@@ -16798,10 +16798,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1679816798 // type: ?type,
1679916799 param_ty_val,
1680016800 };
16801 param_val.* = try pt.intern(.{ .aggregate = .{
16802 .ty = param_info_ty.toIntern(),
16803 .storage = .{ .elems = &param_fields },
16804 } });
16801 param_val.* = (try pt.aggregateValue(param_info_ty, &param_fields)).toIntern();
1680516802 }
1680616803
1680716804 const args_val = v: {
......@@ -16809,10 +16806,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1680916806 .len = param_vals.len,
1681016807 .child = param_info_ty.toIntern(),
1681116808 });
16812 const new_decl_val = try pt.intern(.{ .aggregate = .{
16813 .ty = new_decl_ty.toIntern(),
16814 .storage = .{ .elems = param_vals },
16815 } });
16809 const new_decl_val = (try pt.aggregateValue(new_decl_ty, param_vals)).toIntern();
1681616810 const slice_ty = (try pt.ptrTypeSema(.{
1681716811 .child = param_info_ty.toIntern(),
1681816812 .flags = .{
......@@ -16870,10 +16864,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1687016864 return Air.internedToRef((try pt.internUnion(.{
1687116865 .ty = type_info_ty.toIntern(),
1687216866 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.@"fn"))).toIntern(),
16873 .val = try pt.intern(.{ .aggregate = .{
16874 .ty = fn_info_ty.toIntern(),
16875 .storage = .{ .elems = &field_values },
16876 } }),
16867 .val = (try pt.aggregateValue(fn_info_ty, &field_values)).toIntern(),
1687716868 })));
1687816869 },
1687916870 .int => {
......@@ -16889,10 +16880,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1688916880 return Air.internedToRef((try pt.internUnion(.{
1689016881 .ty = type_info_ty.toIntern(),
1689116882 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.int))).toIntern(),
16892 .val = try pt.intern(.{ .aggregate = .{
16893 .ty = int_info_ty.toIntern(),
16894 .storage = .{ .elems = &field_values },
16895 } }),
16883 .val = (try pt.aggregateValue(int_info_ty, &field_values)).toIntern(),
1689616884 })));
1689716885 },
1689816886 .float => {
......@@ -16905,10 +16893,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1690516893 return Air.internedToRef((try pt.internUnion(.{
1690616894 .ty = type_info_ty.toIntern(),
1690716895 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.float))).toIntern(),
16908 .val = try pt.intern(.{ .aggregate = .{
16909 .ty = float_info_ty.toIntern(),
16910 .storage = .{ .elems = &field_vals },
16911 } }),
16896 .val = (try pt.aggregateValue(float_info_ty, &field_vals)).toIntern(),
1691216897 })));
1691316898 },
1691416899 .pointer => {
......@@ -16946,10 +16931,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1694616931 return Air.internedToRef((try pt.internUnion(.{
1694716932 .ty = type_info_ty.toIntern(),
1694816933 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.pointer))).toIntern(),
16949 .val = try pt.intern(.{ .aggregate = .{
16950 .ty = pointer_ty.toIntern(),
16951 .storage = .{ .elems = &field_values },
16952 } }),
16934 .val = (try pt.aggregateValue(pointer_ty, &field_values)).toIntern(),
1695316935 })));
1695416936 },
1695516937 .array => {
......@@ -16967,10 +16949,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1696716949 return Air.internedToRef((try pt.internUnion(.{
1696816950 .ty = type_info_ty.toIntern(),
1696916951 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.array))).toIntern(),
16970 .val = try pt.intern(.{ .aggregate = .{
16971 .ty = array_field_ty.toIntern(),
16972 .storage = .{ .elems = &field_values },
16973 } }),
16952 .val = (try pt.aggregateValue(array_field_ty, &field_values)).toIntern(),
1697416953 })));
1697516954 },
1697616955 .vector => {
......@@ -16986,10 +16965,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1698616965 return Air.internedToRef((try pt.internUnion(.{
1698716966 .ty = type_info_ty.toIntern(),
1698816967 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.vector))).toIntern(),
16989 .val = try pt.intern(.{ .aggregate = .{
16990 .ty = vector_field_ty.toIntern(),
16991 .storage = .{ .elems = &field_values },
16992 } }),
16968 .val = (try pt.aggregateValue(vector_field_ty, &field_values)).toIntern(),
1699316969 })));
1699416970 },
1699516971 .optional => {
......@@ -17002,10 +16978,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1700216978 return Air.internedToRef((try pt.internUnion(.{
1700316979 .ty = type_info_ty.toIntern(),
1700416980 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.optional))).toIntern(),
17005 .val = try pt.intern(.{ .aggregate = .{
17006 .ty = optional_field_ty.toIntern(),
17007 .storage = .{ .elems = &field_values },
17008 } }),
16981 .val = (try pt.aggregateValue(optional_field_ty, &field_values)).toIntern(),
1700916982 })));
1701016983 },
1701116984 .error_set => {
......@@ -17051,10 +17024,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1705117024 // name: [:0]const u8,
1705217025 error_name_val,
1705317026 };
17054 field_val.* = try pt.intern(.{ .aggregate = .{
17055 .ty = error_field_ty.toIntern(),
17056 .storage = .{ .elems = &error_field_fields },
17057 } });
17027 field_val.* = (try pt.aggregateValue(error_field_ty, &error_field_fields)).toIntern();
1705817028 }
1705917029
1706017030 break :blk vals;
......@@ -17075,10 +17045,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1707517045 .len = vals.len,
1707617046 .child = error_field_ty.toIntern(),
1707717047 });
17078 const new_decl_val = try pt.intern(.{ .aggregate = .{
17079 .ty = array_errors_ty.toIntern(),
17080 .storage = .{ .elems = vals },
17081 } });
17048 const new_decl_val = (try pt.aggregateValue(array_errors_ty, vals)).toIntern();
1708217049 const manyptr_errors_ty = slice_errors_ty.slicePtrFieldType(zcu).toIntern();
1708317050 break :v try pt.intern(.{ .slice = .{
1708417051 .ty = slice_errors_ty.toIntern(),
......@@ -17117,10 +17084,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1711717084 return Air.internedToRef((try pt.internUnion(.{
1711817085 .ty = type_info_ty.toIntern(),
1711917086 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.error_union))).toIntern(),
17120 .val = try pt.intern(.{ .aggregate = .{
17121 .ty = error_union_field_ty.toIntern(),
17122 .storage = .{ .elems = &field_values },
17123 } }),
17087 .val = (try pt.aggregateValue(error_union_field_ty, &field_values)).toIntern(),
1712417088 })));
1712517089 },
1712617090 .@"enum" => {
......@@ -17174,10 +17138,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1717417138 // value: comptime_int,
1717517139 value_val,
1717617140 };
17177 field_val.* = try pt.intern(.{ .aggregate = .{
17178 .ty = enum_field_ty.toIntern(),
17179 .storage = .{ .elems = &enum_field_fields },
17180 } });
17141 field_val.* = (try pt.aggregateValue(enum_field_ty, &enum_field_fields)).toIntern();
1718117142 }
1718217143
1718317144 const fields_val = v: {
......@@ -17185,10 +17146,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1718517146 .len = enum_field_vals.len,
1718617147 .child = enum_field_ty.toIntern(),
1718717148 });
17188 const new_decl_val = try pt.intern(.{ .aggregate = .{
17189 .ty = fields_array_ty.toIntern(),
17190 .storage = .{ .elems = enum_field_vals },
17191 } });
17149 const new_decl_val = (try pt.aggregateValue(fields_array_ty, enum_field_vals)).toIntern();
1719217150 const slice_ty = (try pt.ptrTypeSema(.{
1719317151 .child = enum_field_ty.toIntern(),
1719417152 .flags = .{
......@@ -17228,10 +17186,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1722817186 return Air.internedToRef((try pt.internUnion(.{
1722917187 .ty = type_info_ty.toIntern(),
1723017188 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.@"enum"))).toIntern(),
17231 .val = try pt.intern(.{ .aggregate = .{
17232 .ty = type_enum_ty.toIntern(),
17233 .storage = .{ .elems = &field_values },
17234 } }),
17189 .val = (try pt.aggregateValue(type_enum_ty, &field_values)).toIntern(),
1723517190 })));
1723617191 },
1723717192 .@"union" => {
......@@ -17287,10 +17242,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1728717242 // alignment: comptime_int,
1728817243 (try pt.intValue(.comptime_int, alignment.toByteUnits() orelse 0)).toIntern(),
1728917244 };
17290 field_val.* = try pt.intern(.{ .aggregate = .{
17291 .ty = union_field_ty.toIntern(),
17292 .storage = .{ .elems = &union_field_fields },
17293 } });
17245 field_val.* = (try pt.aggregateValue(union_field_ty, &union_field_fields)).toIntern();
1729417246 }
1729517247
1729617248 const fields_val = v: {
......@@ -17298,10 +17250,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1729817250 .len = union_field_vals.len,
1729917251 .child = union_field_ty.toIntern(),
1730017252 });
17301 const new_decl_val = try pt.intern(.{ .aggregate = .{
17302 .ty = array_fields_ty.toIntern(),
17303 .storage = .{ .elems = union_field_vals },
17304 } });
17253 const new_decl_val = (try pt.aggregateValue(array_fields_ty, union_field_vals)).toIntern();
1730517254 const slice_ty = (try pt.ptrTypeSema(.{
1730617255 .child = union_field_ty.toIntern(),
1730717256 .flags = .{
......@@ -17347,10 +17296,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1734717296 return Air.internedToRef((try pt.internUnion(.{
1734817297 .ty = type_info_ty.toIntern(),
1734917298 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.@"union"))).toIntern(),
17350 .val = try pt.intern(.{ .aggregate = .{
17351 .ty = type_union_ty.toIntern(),
17352 .storage = .{ .elems = &field_values },
17353 } }),
17299 .val = (try pt.aggregateValue(type_union_ty, &field_values)).toIntern(),
1735417300 })));
1735517301 },
1735617302 .@"struct" => {
......@@ -17411,10 +17357,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1741117357 // alignment: comptime_int,
1741217358 (try pt.intValue(.comptime_int, Type.fromInterned(field_ty).abiAlignment(zcu).toByteUnits() orelse 0)).toIntern(),
1741317359 };
17414 struct_field_val.* = try pt.intern(.{ .aggregate = .{
17415 .ty = struct_field_ty.toIntern(),
17416 .storage = .{ .elems = &struct_field_fields },
17417 } });
17360 struct_field_val.* = (try pt.aggregateValue(struct_field_ty, &struct_field_fields)).toIntern();
1741817361 }
1741917362 break :fv;
1742017363 },
......@@ -17481,10 +17424,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1748117424 // alignment: comptime_int,
1748217425 (try pt.intValue(.comptime_int, alignment.toByteUnits() orelse 0)).toIntern(),
1748317426 };
17484 field_val.* = try pt.intern(.{ .aggregate = .{
17485 .ty = struct_field_ty.toIntern(),
17486 .storage = .{ .elems = &struct_field_fields },
17487 } });
17427 field_val.* = (try pt.aggregateValue(struct_field_ty, &struct_field_fields)).toIntern();
1748817428 }
1748917429 }
1749017430
......@@ -17493,10 +17433,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1749317433 .len = struct_field_vals.len,
1749417434 .child = struct_field_ty.toIntern(),
1749517435 });
17496 const new_decl_val = try pt.intern(.{ .aggregate = .{
17497 .ty = array_fields_ty.toIntern(),
17498 .storage = .{ .elems = struct_field_vals },
17499 } });
17436 const new_decl_val = (try pt.aggregateValue(array_fields_ty, struct_field_vals)).toIntern();
1750017437 const slice_ty = (try pt.ptrTypeSema(.{
1750117438 .child = struct_field_ty.toIntern(),
1750217439 .flags = .{
......@@ -17548,10 +17485,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1754817485 return Air.internedToRef((try pt.internUnion(.{
1754917486 .ty = type_info_ty.toIntern(),
1755017487 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.@"struct"))).toIntern(),
17551 .val = try pt.intern(.{ .aggregate = .{
17552 .ty = type_struct_ty.toIntern(),
17553 .storage = .{ .elems = &field_values },
17554 } }),
17488 .val = (try pt.aggregateValue(type_struct_ty, &field_values)).toIntern(),
1755517489 })));
1755617490 },
1755717491 .@"opaque" => {
......@@ -17567,10 +17501,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1756717501 return Air.internedToRef((try pt.internUnion(.{
1756817502 .ty = type_info_ty.toIntern(),
1756917503 .tag = (try pt.enumValueFieldIndex(type_info_tag_ty, @intFromEnum(std.builtin.TypeId.@"opaque"))).toIntern(),
17570 .val = try pt.intern(.{ .aggregate = .{
17571 .ty = type_opaque_ty.toIntern(),
17572 .storage = .{ .elems = &field_values },
17573 } }),
17504 .val = (try pt.aggregateValue(type_opaque_ty, &field_values)).toIntern(),
1757417505 })));
1757517506 },
1757617507 .frame => return sema.failWithUseOfAsync(block, src),
......@@ -17601,10 +17532,7 @@ fn typeInfoDecls(
1760117532 .len = decl_vals.items.len,
1760217533 .child = declaration_ty.toIntern(),
1760317534 });
17604 const new_decl_val = try pt.intern(.{ .aggregate = .{
17605 .ty = array_decl_ty.toIntern(),
17606 .storage = .{ .elems = decl_vals.items },
17607 } });
17535 const new_decl_val = (try pt.aggregateValue(array_decl_ty, decl_vals.items)).toIntern();
1760817536 const slice_ty = (try pt.ptrTypeSema(.{
1760917537 .child = declaration_ty.toIntern(),
1761017538 .flags = .{
......@@ -17679,10 +17607,7 @@ fn typeInfoNamespaceDecls(
1767917607 // name: [:0]const u8,
1768017608 name_val,
1768117609 };
17682 try decl_vals.append(try pt.intern(.{ .aggregate = .{
17683 .ty = declaration_ty.toIntern(),
17684 .storage = .{ .elems = &fields },
17685 } }));
17610 try decl_vals.append((try pt.aggregateValue(declaration_ty, &fields)).toIntern());
1768617611 }
1768717612}
1768817613
src/codegen/spirv/CodeGen.zig+1-1
......@@ -779,7 +779,7 @@ fn constant(cg: *CodeGen, ty: Type, val: Value, repr: Repr) Error!Id {
779779 const ip = &zcu.intern_pool;
780780
781781 log.debug("lowering constant: ty = {f}, val = {f}, key = {s}", .{ ty.fmt(pt), val.fmtValue(pt), @tagName(ip.indexToKey(val.toIntern())) });
782 if (val.isUndefDeep(zcu)) {
782 if (val.isUndef(zcu)) {
783783 return cg.module.constUndef(result_ty_id);
784784 }
785785