authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-11-06 12:48:28+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-11-06 12:48:52+02:00
log79549e0ac188ffd92b8959c8160d9a4a27d0eb30
treea83e67808b7695158e4bfb6c55f9e9778ab6a792
parentc9551652b01bf47a94c139846f22c5df85d07283
signaturelock-open Commit is signed but in an unrecognized format.

translate-c: fix macro functions with no arguments


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

src/translate_c.zig+3-5
......@@ -5437,9 +5437,8 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void {
54375437 defer fn_params.deinit();
54385438
54395439 while (true) {
5440 if (m.next().? != .Identifier) {
5441 return m.fail(c, "unable to translate C expr: expected identifier", .{});
5442 }
5440 if (m.peek().? != .Identifier) break;
5441 _ = m.next();
54435442
54445443 const mangled_name = try block_scope.makeMangledName(c, m.slice());
54455444 const param_name_tok = try appendIdentifier(c, mangled_name);
......@@ -5459,8 +5458,7 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void {
54595458 .param_type = .{ .any_type = &any_type.base },
54605459 };
54615460
5462 if (m.peek().? != .Comma)
5463 break;
5461 if (m.peek().? != .Comma) break;
54645462 _ = m.next();
54655463 _ = try appendToken(c, .Comma, ",");
54665464 }
test/translate_c.zig+5
......@@ -1589,6 +1589,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15891589 \\extern int c;
15901590 \\#define BASIC(c) (c*2)
15911591 \\#define FOO(L,b) (L + b)
1592 \\#define BAR() (c*c)
15921593 , &[_][]const u8{
15931594 \\pub extern var c: c_int;
15941595 ,
......@@ -1599,6 +1600,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15991600 \\pub inline fn FOO(L: anytype, b: anytype) @TypeOf(L + b) {
16001601 \\ return L + b;
16011602 \\}
1603 ,
1604 \\pub inline fn BAR() @TypeOf(c * c) {
1605 \\ return c * c;
1606 \\}
16021607 });
16031608
16041609 cases.add("macro defines string literal with hex",