authorgravatar for mgk1795@gmail.comMatthew Knight <mgk1795@gmail.com> 2020-05-02 20:22:43-07:00
committergravatar for mgk1795@gmail.comMatthew Knight <mgk1795@gmail.com> 2020-05-02 20:22:43-07:00
logc5198bd76f96d7dab64fdd8d81fc8028187b1403
treeb7b49ebce8a30a3295e57b99a3249283fa743b86
parent3dbe02e2d8cda1fe0072e71ae7630170c270419e

added scoped typedef to translate-c


2 files changed, 29 insertions(+), 0 deletions(-)

src-self-hosted/translate_c.zig+18
......@@ -1394,6 +1394,24 @@ fn transDeclStmt(rp: RestorePoint, scope: *Scope, stmt: *const ZigClangDeclStmt)
13941394 node.semicolon_token = try appendToken(c, .Semicolon, ";");
13951395 try block_scope.block_node.statements.push(&node.base);
13961396 },
1397 .Typedef => {
1398 const type_decl = @ptrCast(*const ZigClangTypedefNameDecl, it[0]);
1399 const name = try c.str(ZigClangNamedDecl_getName_bytes_begin(
1400 @ptrCast(*const ZigClangNamedDecl, type_decl),
1401 ));
1402
1403 const underlying_qual = ZigClangTypedefNameDecl_getUnderlyingType(type_decl);
1404 const underlying_type = ZigClangQualType_getTypePtr(underlying_qual);
1405
1406 const mangled_name = try block_scope.makeMangledName(c, name);
1407 const node = try transCreateNodeVarDecl(c, false, true, mangled_name);
1408 node.eq_token = try appendToken(c, .Equal, "=");
1409
1410 const loc = ZigClangStmt_getBeginLoc(@ptrCast(*const ZigClangStmt, stmt));
1411 node.init_node = try transType(rp, underlying_type, loc);
1412 node.semicolon_token = try appendToken(c, .Semicolon, ";");
1413 try block_scope.block_node.statements.push(&node.base);
1414 },
13971415 else => |kind| return revertAndWarn(
13981416 rp,
13991417 error.UnsupportedTranslation,
test/run_translated_c.zig+11
......@@ -243,4 +243,15 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {
243243 \\ return 0;
244244 \\}
245245 , "");
246
247 cases.add("scoped typedef",
248 \\int main(int argc, char **argv) {
249 \\ typedef int Foo;
250 \\ typedef Foo Bar;
251 \\ typedef void (*func)(int);
252 \\ Foo i;
253 \\ Bar j;
254 \\ return 0;
255 \\}
256 , "");
246257}