Commit 63ae7899ae

Veikka Tuominen <git@vexu.eu>
2022-11-27 15:50:35
cbe: ensure test and tagName function names are unique
1 parent 71038c4
Changed files (7)
src/codegen/c.zig
@@ -1961,7 +1961,7 @@ pub const DeclGen = struct {
         try buffer.appendSlice("static ");
         try dg.renderType(bw, name_slice_ty, .Complete);
         const name_begin = buffer.items.len + " ".len;
-        try bw.print(" zig_tagName_{}(", .{typeToCIdentifier(enum_ty, dg.module)});
+        try bw.print(" zig_tagName_{}_{d}(", .{ typeToCIdentifier(enum_ty, dg.module), @enumToInt(enum_ty.getOwnerDecl()) });
         const name_end = buffer.items.len - "(".len;
         try dg.renderTypeAndName(bw, enum_ty, .{ .identifier = "tag" }, .Const, 0, .Complete);
         try buffer.appendSlice(") {\n switch (tag) {\n");
@@ -2111,11 +2111,16 @@ pub const DeclGen = struct {
             return writer.writeAll(exports.items[0].options.name);
         } else if (decl.isExtern()) {
             return writer.writeAll(mem.sliceTo(decl.name, 0));
+        } else if (dg.module.test_functions.get(decl_index)) |_| {
+            const gpa = dg.gpa;
+            const name = try decl.getFullyQualifiedName(dg.module);
+            defer gpa.free(name);
+            return writer.print("{}_{d}", .{ fmtIdent(name), @enumToInt(decl_index) });
         } else {
             const gpa = dg.gpa;
             const name = try decl.getFullyQualifiedName(dg.module);
             defer gpa.free(name);
-            return writer.print("{ }", .{fmtIdent(name)});
+            return writer.print("{}", .{fmtIdent(name)});
         }
     }
 
test/behavior/bugs/13064.zig
@@ -5,7 +5,6 @@ const expect = std.testing.expect;
 test {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
 
     var x: [10][10]u32 = undefined;
 
test/behavior/bugs/13065.zig
@@ -10,7 +10,6 @@ const U = union(enum) {
 test {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
 
     var x = U{ .array = undefined };
 
test/behavior/bugs/13069.zig
@@ -6,7 +6,6 @@ test {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
 
     var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;
 
test/behavior/basic.zig
@@ -739,7 +739,6 @@ test "thread local variable" {
 }
 
 test "result location is optional inside error union" {
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
 
test/behavior/enum.zig
@@ -1101,7 +1101,6 @@ test "enum literal in array literal" {
 }
 
 test "tag name functions are unique" {
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
test/behavior/math.zig
@@ -315,8 +315,6 @@ test "comptime_int multi-limb partial shift right" {
 }
 
 test "xor" {
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
-
     try test_xor();
     comptime try test_xor();
 }
@@ -572,7 +570,6 @@ fn testShrTrunc(x: u16) !void {
 }
 
 test "f128" {
-    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO