authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-02-19 01:52:27+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-02-19 01:52:27+02:00
log3aba1fa04fe633f89e05a7adc4c170d400705bf9
tree545bbca224451c55559e7bcc9a8af5a3f092e28a
parentdf5a8120df640de900667624ad8390394f99521f
signature Commit is signed but in an unrecognized format.

translate-c: ensure failed macros don't get defined multiple times


2 files changed, 7 insertions(+), 1 deletions(-)

src/translate_c.zig+1-1
......@@ -4025,7 +4025,7 @@ pub fn failDecl(c: *Context, loc: clang.SourceLocation, name: []const u8, compti
40254025 // location
40264026 // pub const name = @compileError(msg);
40274027 const fail_msg = try std.fmt.allocPrint(c.arena, format, args);
4028 try c.global_scope.nodes.append(try Tag.fail_decl.create(c.arena, .{ .actual = name, .mangled = fail_msg }));
4028 try addTopLevelDecl(c, name, try Tag.fail_decl.create(c.arena, .{ .actual = name, .mangled = fail_msg }));
40294029 const location_comment = try std.fmt.allocPrint(c.arena, "// {s}", .{c.locStr(loc)});
40304030 try c.global_scope.nodes.append(try Tag.warning.create(c.arena, location_comment));
40314031}
test/run_translated_c.zig+6
......@@ -3,6 +3,12 @@ const tests = @import("tests.zig");
33const nl = std.cstr.line_sep;
44
55pub fn addCases(cases: *tests.RunTranslatedCContext) void {
6 cases.add("failed macros are only declared once",
7 \\#define FOO =
8 \\#define FOO =
9 \\int main(void) {}
10 , "");
11
612 cases.add("parenthesized string literal",
713 \\void foo(const char *s) {}
814 \\int main(void) {