| ... | ... | @@ -1178,6 +1178,14 @@ pub const DeclGen = struct { |
| 1178 | 1178 | } |
| 1179 | 1179 | } |
| 1180 | 1180 | |
| 1181 | // Turn a Zig type's name into a cache reference. |
| 1182 | fn resolveTypeName(self: *DeclGen, ty: Type) !CacheString { |
| 1183 | var name = std.ArrayList(u8).init(self.gpa); |
| 1184 | defer name.deinit(); |
| 1185 | try ty.print(name.writer(), self.module); |
| 1186 | return try self.spv.resolveString(name.items); |
| 1187 | } |
| 1188 | |
| 1181 | 1189 | /// Turn a Zig type into a SPIR-V Type, and return its type result-id. |
| 1182 | 1190 | fn resolveTypeId(self: *DeclGen, ty: Type) !IdResultType { |
| 1183 | 1191 | const type_ref = try self.resolveType(ty, .direct); |
| ... | ... | @@ -1289,6 +1297,7 @@ pub const DeclGen = struct { |
| 1289 | 1297 | } |
| 1290 | 1298 | |
| 1291 | 1299 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| 1300 | .name = try self.resolveTypeName(ty), |
| 1292 | 1301 | .member_types = member_types.slice(), |
| 1293 | 1302 | .member_names = member_names.slice(), |
| 1294 | 1303 | } }); |
| ... | ... | @@ -1443,6 +1452,7 @@ pub const DeclGen = struct { |
| 1443 | 1452 | } |
| 1444 | 1453 | |
| 1445 | 1454 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| 1455 | .name = try self.resolveTypeName(ty), |
| 1446 | 1456 | .member_types = member_types[0..member_index], |
| 1447 | 1457 | } }); |
| 1448 | 1458 | |
| ... | ... | @@ -1472,10 +1482,8 @@ pub const DeclGen = struct { |
| 1472 | 1482 | try member_names.append(try self.spv.resolveString(field_name)); |
| 1473 | 1483 | } |
| 1474 | 1484 | |
| 1475 | | const name = ip.stringToSlice(try mod.declPtr(struct_type.decl.unwrap().?).getFullyQualifiedName(mod)); |
| 1476 | | |
| 1477 | 1485 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| 1478 | | .name = try self.spv.resolveString(name), |
| 1486 | .name = try self.resolveTypeName(ty), |
| 1479 | 1487 | .member_types = member_types.items, |
| 1480 | 1488 | .member_names = member_names.items, |
| 1481 | 1489 | } }); |
| ... | ... | @@ -1555,6 +1563,7 @@ pub const DeclGen = struct { |
| 1555 | 1563 | } |
| 1556 | 1564 | |
| 1557 | 1565 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| 1566 | .name = try self.resolveTypeName(ty), |
| 1558 | 1567 | .member_types = &member_types, |
| 1559 | 1568 | .member_names = &member_names, |
| 1560 | 1569 | } }); |