aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2022-11-01 01:28:17 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2022-11-01 20:38:52 -0400
commitfb8c08d4acec2ec0d9f06862276cfd6c1c32cd7f (patch)
treeca0a006e63c54e01633b254f5d98ff6f91155af6 /src/codegen/c.zig
parent91fe0b80a22b43cd56e7fb747311d50f2fcd5441 (diff)
downloadzig-fb8c08d4acec2ec0d9f06862276cfd6c1c32cd7f.tar.gz
zig-fb8c08d4acec2ec0d9f06862276cfd6c1c32cd7f.zip
cbe: disambiguate struct typedefs with decl index
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index f05475a968..8bcb485e84 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -1297,7 +1297,8 @@ pub const DeclGen = struct {
var fqn_buf = std.ArrayList(u8).init(dg.typedefs.allocator);
defer fqn_buf.deinit();
- const owner_decl = dg.module.declPtr(child_ty.getOwnerDecl());
+ const owner_decl_index = child_ty.getOwnerDecl();
+ const owner_decl = dg.module.declPtr(owner_decl_index);
try owner_decl.renderFullyQualifiedName(dg.module, fqn_buf.writer());
var buffer = std.ArrayList(u8).init(dg.typedefs.allocator);
@@ -1309,7 +1310,11 @@ pub const DeclGen = struct {
else => unreachable,
};
const name_begin = buffer.items.len + "typedef ".len + tag.len;
- try buffer.writer().print("typedef {s}zig_S_{} ", .{ tag, fmtIdent(fqn_buf.items) });
+ try buffer.writer().print("typedef {s}zig_S_{}__{d} ", .{
+ tag,
+ fmtIdent(fqn_buf.items),
+ @enumToInt(owner_decl_index),
+ });
const name_end = buffer.items.len - " ".len;
try buffer.ensureUnusedCapacity((name_end - name_begin) + ";\n".len);
buffer.appendSliceAssumeCapacity(buffer.items[name_begin..name_end]);