zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 79549e0ac188ffd92b8959c8160d9a4a27d0eb30 (tree)
parent c9551652b01bf47a94c139846f22c5df85d07283
Author: Vexu <git@vexu.eu>
Date:   Fri,  6 Nov 2020 12:48:28 +0200

translate-c: fix macro functions with no arguments

Diffstat:
Msrc/translate_c.zig | 8+++-----
Mtest/translate_c.zig | 5+++++
2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/translate_c.zig b/src/translate_c.zig @@ -5437,9 +5437,8 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void { defer fn_params.deinit(); while (true) { - if (m.next().? != .Identifier) { - return m.fail(c, "unable to translate C expr: expected identifier", .{}); - } + if (m.peek().? != .Identifier) break; + _ = m.next(); const mangled_name = try block_scope.makeMangledName(c, m.slice()); const param_name_tok = try appendIdentifier(c, mangled_name); @@ -5459,8 +5458,7 @@ fn transMacroFnDefine(c: *Context, m: *MacroCtx) ParseError!void { .param_type = .{ .any_type = &any_type.base }, }; - if (m.peek().? != .Comma) - break; + if (m.peek().? != .Comma) break; _ = m.next(); _ = try appendToken(c, .Comma, ","); } diff --git a/test/translate_c.zig b/test/translate_c.zig @@ -1589,6 +1589,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { \\extern int c; \\#define BASIC(c) (c*2) \\#define FOO(L,b) (L + b) + \\#define BAR() (c*c) , &[_][]const u8{ \\pub extern var c: c_int; , @@ -1599,6 +1600,10 @@ pub fn addCases(cases: *tests.TranslateCContext) void { \\pub inline fn FOO(L: anytype, b: anytype) @TypeOf(L + b) { \\ return L + b; \\} + , + \\pub inline fn BAR() @TypeOf(c * c) { + \\ return c * c; + \\} }); cases.add("macro defines string literal with hex",