authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-11-01 01:28:17-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-11-01 20:38:52-04:00
logfb8c08d4acec2ec0d9f06862276cfd6c1c32cd7f
treeca0a006e63c54e01633b254f5d98ff6f91155af6
parent91fe0b80a22b43cd56e7fb747311d50f2fcd5441

cbe: disambiguate struct typedefs with decl index


1 files changed, 7 insertions(+), 2 deletions(-)

src/codegen/c.zig+7-2
......@@ -1297,7 +1297,8 @@ pub const DeclGen = struct {
12971297 var fqn_buf = std.ArrayList(u8).init(dg.typedefs.allocator);
12981298 defer fqn_buf.deinit();
12991299
1300 const owner_decl = dg.module.declPtr(child_ty.getOwnerDecl());
1300 const owner_decl_index = child_ty.getOwnerDecl();
1301 const owner_decl = dg.module.declPtr(owner_decl_index);
13011302 try owner_decl.renderFullyQualifiedName(dg.module, fqn_buf.writer());
13021303
13031304 var buffer = std.ArrayList(u8).init(dg.typedefs.allocator);
......@@ -1309,7 +1310,11 @@ pub const DeclGen = struct {
13091310 else => unreachable,
13101311 };
13111312 const name_begin = buffer.items.len + "typedef ".len + tag.len;
1312 try buffer.writer().print("typedef {s}zig_S_{} ", .{ tag, fmtIdent(fqn_buf.items) });
1313 try buffer.writer().print("typedef {s}zig_S_{}__{d} ", .{
1314 tag,
1315 fmtIdent(fqn_buf.items),
1316 @enumToInt(owner_decl_index),
1317 });
13131318 const name_end = buffer.items.len - " ".len;
13141319 try buffer.ensureUnusedCapacity((name_end - name_begin) + ";\n".len);
13151320 buffer.appendSliceAssumeCapacity(buffer.items[name_begin..name_end]);