authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-05-06 11:48:46+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-05-06 11:48:46+03:00
logc0b269bf46d6257112f08a3c48904dd5654c97e8
treec4f45c70b182651219412b46700fc0364cae9bac
parent52f0adb3052b284102f2a96c083c5dd28b7941d8
signature Commit is signed but in an unrecognized format.

translate-c: small patch to fix bultin type detection


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

src-self-hosted/translate_c.zig+2-3
...@@ -669,7 +669,7 @@ fn transTypeDefAsBuiltin(c: *Context, typedef_decl: *const ZigClangTypedefNameDe...@@ -669,7 +669,7 @@ fn transTypeDefAsBuiltin(c: *Context, typedef_decl: *const ZigClangTypedefNameDe
669}669}
670670
671fn checkForBuiltinTypedef(checked_name: []const u8) !?[]const u8 {671fn checkForBuiltinTypedef(checked_name: []const u8) !?[]const u8 {
672 const table = comptime [_][2][]const u8{672 const table = [_][2][]const u8{
673 .{ "uint8_t", "u8" },673 .{ "uint8_t", "u8" },
674 .{ "int8_t", "i8" },674 .{ "int8_t", "i8" },
675 .{ "uint16_t", "u16" },675 .{ "uint16_t", "u16" },
...@@ -1409,10 +1409,9 @@ fn transDeclStmt(rp: RestorePoint, scope: *Scope, stmt: *const ZigClangDeclStmt)...@@ -1409,10 +1409,9 @@ fn transDeclStmt(rp: RestorePoint, scope: *Scope, stmt: *const ZigClangDeclStmt)
14091409
1410 const underlying_qual = ZigClangTypedefNameDecl_getUnderlyingType(typedef_decl);1410 const underlying_qual = ZigClangTypedefNameDecl_getUnderlyingType(typedef_decl);
1411 const underlying_type = ZigClangQualType_getTypePtr(underlying_qual);1411 const underlying_type = ZigClangQualType_getTypePtr(underlying_qual);
1412 const underlying_name = try c.str(ZigClangType_getTypeClassName(underlying_type));
14131412
1414 const mangled_name = try block_scope.makeMangledName(c, name);1413 const mangled_name = try block_scope.makeMangledName(c, name);
1415 if (try checkForBuiltinTypedef(underlying_name)) |builtin| {1414 if (try checkForBuiltinTypedef(name)) |builtin| {
1416 try block_scope.variables.push(.{1415 try block_scope.variables.push(.{
1417 .alias = builtin,1416 .alias = builtin,
1418 .name = mangled_name,1417 .name = mangled_name,
test/run_translated_c.zig+2-2
...@@ -245,12 +245,12 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {...@@ -245,12 +245,12 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {
245 , "");245 , "");
246246
247 cases.add("scoped typedef",247 cases.add("scoped typedef",
248 \\#include <stdint.h>
249 \\int main(int argc, char **argv) {248 \\int main(int argc, char **argv) {
250 \\ typedef int Foo;249 \\ typedef int Foo;
251 \\ typedef Foo Bar;250 \\ typedef Foo Bar;
252 \\ typedef void (*func)(int);251 \\ typedef void (*func)(int);
253 \\ typedef uint32_t Number;252 \\ typedef int uint32_t;
253 \\ uint32_t a;
254 \\ Foo i;254 \\ Foo i;
255 \\ Bar j;255 \\ Bar j;
256 \\ return 0;256 \\ return 0;