authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-03-10 15:52:54+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-03-10 15:52:54+02:00
log4cace8f7c342b7d1b1f415cc28f48d5c98bada72
tree7ff154a539e2aee3bbb28553f24417693cc9c630
parentbaec74645d8757f51f1ac14483daf4438e2d77bd
signaturelock-open Commit is signed but in an unrecognized format.

properly mangle shadowed primitive types


2 files changed, 4 insertions(+), 4 deletions(-)

src-self-hosted/translate_c.zig+3-3
...@@ -560,7 +560,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -560,7 +560,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
560560
561 // TODO https://github.com/ziglang/zig/issues/3756561 // TODO https://github.com/ziglang/zig/issues/3756
562 // TODO https://github.com/ziglang/zig/issues/1802562 // TODO https://github.com/ziglang/zig/issues/1802
563 const checked_name = if (isZigPrimitiveType(var_name)) try std.fmt.allocPrint(c.a(), "_{}", .{var_name}) else var_name;563 const checked_name = if (isZigPrimitiveType(var_name)) try std.fmt.allocPrint(c.a(), "{}_{}", .{var_name, c.getMangle()}) else var_name;
564 const var_decl_loc = ZigClangVarDecl_getLocation(var_decl);564 const var_decl_loc = ZigClangVarDecl_getLocation(var_decl);
565565
566 const qual_type = ZigClangVarDecl_getTypeSourceInfo_getType(var_decl);566 const qual_type = ZigClangVarDecl_getTypeSourceInfo_getType(var_decl);
...@@ -677,7 +677,7 @@ fn transTypeDef(c: *Context, typedef_decl: *const ZigClangTypedefNameDecl, top_l...@@ -677,7 +677,7 @@ fn transTypeDef(c: *Context, typedef_decl: *const ZigClangTypedefNameDecl, top_l
677677
678 // TODO https://github.com/ziglang/zig/issues/3756678 // TODO https://github.com/ziglang/zig/issues/3756
679 // TODO https://github.com/ziglang/zig/issues/1802679 // TODO https://github.com/ziglang/zig/issues/1802
680 const checked_name = if (isZigPrimitiveType(typedef_name)) try std.fmt.allocPrint(c.a(), "_{}", .{typedef_name}) else typedef_name;680 const checked_name = if (isZigPrimitiveType(typedef_name)) try std.fmt.allocPrint(c.a(), "{}_{}", .{typedef_name, c.getMangle()}) else typedef_name;
681681
682 if (mem.eql(u8, checked_name, "uint8_t"))682 if (mem.eql(u8, checked_name, "uint8_t"))
683 return transTypeDefAsBuiltin(c, typedef_decl, "u8")683 return transTypeDefAsBuiltin(c, typedef_decl, "u8")
...@@ -4857,7 +4857,7 @@ fn transPreprocessorEntities(c: *Context, unit: *ZigClangASTUnit) Error!void {...@@ -4857,7 +4857,7 @@ fn transPreprocessorEntities(c: *Context, unit: *ZigClangASTUnit) Error!void {
4857 const name = try c.str(raw_name);4857 const name = try c.str(raw_name);
4858 // TODO https://github.com/ziglang/zig/issues/37564858 // TODO https://github.com/ziglang/zig/issues/3756
4859 // TODO https://github.com/ziglang/zig/issues/18024859 // TODO https://github.com/ziglang/zig/issues/1802
4860 const mangled_name = if (isZigPrimitiveType(name)) try std.fmt.allocPrint(c.a(), "_{}", .{name}) else name;4860 const mangled_name = if (isZigPrimitiveType(name)) try std.fmt.allocPrint(c.a(), "{}_{}", .{name, c.getMangle()}) else name;
4861 if (scope.containsNow(mangled_name)) {4861 if (scope.containsNow(mangled_name)) {
4862 continue;4862 continue;
4863 }4863 }
test/translate_c.zig+1-1
...@@ -1601,7 +1601,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1601,7 +1601,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1601 cases.add("shadowing primitive types",1601 cases.add("shadowing primitive types",
1602 \\unsigned anyerror = 2;1602 \\unsigned anyerror = 2;
1603 , &[_][]const u8{1603 , &[_][]const u8{
1604 \\pub export var _anyerror: c_uint = @bitCast(c_uint, @as(c_int, 2));1604 \\pub export var anyerror_1: c_uint = @bitCast(c_uint, @as(c_int, 2));
1605 });1605 });
16061606
1607 cases.add("floats",1607 cases.add("floats",