From 3aba1fa04fe633f89e05a7adc4c170d400705bf9 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Fri, 19 Feb 2021 01:52:27 +0200 Subject: [PATCH] translate-c: ensure failed macros don't get defined multiple times --- src/translate_c.zig | 2 +- test/run_translated_c.zig | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/translate_c.zig b/src/translate_c.zig index 541b854da7..f29dfccfa3 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -4025,7 +4025,7 @@ pub fn failDecl(c: *Context, loc: clang.SourceLocation, name: []const u8, compti // location // pub const name = @compileError(msg); const fail_msg = try std.fmt.allocPrint(c.arena, format, args); - try c.global_scope.nodes.append(try Tag.fail_decl.create(c.arena, .{ .actual = name, .mangled = fail_msg })); + try addTopLevelDecl(c, name, try Tag.fail_decl.create(c.arena, .{ .actual = name, .mangled = fail_msg })); const location_comment = try std.fmt.allocPrint(c.arena, "// {s}", .{c.locStr(loc)}); try c.global_scope.nodes.append(try Tag.warning.create(c.arena, location_comment)); } diff --git a/test/run_translated_c.zig b/test/run_translated_c.zig index 04095d3b71..2db80c9c6a 100644 --- a/test/run_translated_c.zig +++ b/test/run_translated_c.zig @@ -3,6 +3,12 @@ const tests = @import("tests.zig"); const nl = std.cstr.line_sep; pub fn addCases(cases: *tests.RunTranslatedCContext) void { + cases.add("failed macros are only declared once", + \\#define FOO = + \\#define FOO = + \\int main(void) {} + , ""); + cases.add("parenthesized string literal", \\void foo(const char *s) {} \\int main(void) {