authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-12-12 16:56:21+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-12-12 18:18:43+02:00
log3bca02509163b1c77776762d371fd802073ff7dd
tree6461ae7cab07119658c10923e278b62cab578ee2
parentef361161e2d6e5d23ee7e8d0fc924e16cf691173
signature Commit is signed but in an unrecognized format.

update tests


3 files changed, 114 insertions(+), 153 deletions(-)

src-self-hosted/translate_c.zig+5-5
...@@ -322,7 +322,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -322,7 +322,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
322322
323 var var_node = try transCreateNodeVarDecl(c, true, is_extern, is_const, var_name);323 var var_node = try transCreateNodeVarDecl(c, true, is_extern, is_const, var_name);
324324
325 const type_node = transQualType(rp, qual_type, var_decl_loc) catch |err| switch (err) {325 _= try appendToken(rp.c, .Colon, ":");
326 var_node.type_node = transQualType(rp, qual_type, var_decl_loc) catch |err| switch (err) {
326 error.UnsupportedType => {327 error.UnsupportedType => {
327 return failDecl(c, var_decl_loc, var_name, "unable to resolve variable type", .{});328 return failDecl(c, var_decl_loc, var_name, "unable to resolve variable type", .{});
328 },329 },
...@@ -336,7 +337,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -336,7 +337,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
336 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});337 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});
337 break :blk transApValue(rp, ap_value, qual_type, var_decl_loc) catch |err| switch (err) {338 break :blk transApValue(rp, ap_value, qual_type, var_decl_loc) catch |err| switch (err) {
338 error.UnsupportedTranslation,339 error.UnsupportedTranslation,
339 error.UnsupportedType, => {340 error.UnsupportedType,
341 => {
340 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});342 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});
341 },343 },
342 error.OutOfMemory => |e| return e,344 error.OutOfMemory => |e| return e,
...@@ -345,9 +347,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -345,9 +347,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
345 try transCreateNodeUndefinedLiteral(c);347 try transCreateNodeUndefinedLiteral(c);
346 var_node.eq_token = eq_tok;348 var_node.eq_token = eq_tok;
347 var_node.init_node = init_node;349 var_node.init_node = init_node;
348 }350 } else if (!is_extern) {
349
350 if (!is_extern) {
351 return failDecl(c, var_decl_loc, var_name, "non-extern, non-static variable not supported", .{});351 return failDecl(c, var_decl_loc, var_name, "non-extern, non-static variable not supported", .{});
352 }352 }
353353
test/tests.zig-34
...@@ -1604,16 +1604,6 @@ pub const TranslateCContext = struct {...@@ -1604,16 +1604,6 @@ pub const TranslateCContext = struct {
1604 self.addCase(tc);1604 self.addCase(tc);
1605 }1605 }
16061606
1607 pub fn addC(
1608 self: *TranslateCContext,
1609 name: []const u8,
1610 source: []const u8,
1611 expected_lines: []const []const u8,
1612 ) void {
1613 const tc = self.create(false, "source.c", name, source, expected_lines);
1614 self.addCase(tc);
1615 }
1616
1617 pub fn add_both(1607 pub fn add_both(
1618 self: *TranslateCContext,1608 self: *TranslateCContext,
1619 name: []const u8,1609 name: []const u8,
...@@ -1627,19 +1617,6 @@ pub const TranslateCContext = struct {...@@ -1627,19 +1617,6 @@ pub const TranslateCContext = struct {
1627 }1617 }
1628 }1618 }
16291619
1630 pub fn addC_both(
1631 self: *TranslateCContext,
1632 name: []const u8,
1633 source: []const u8,
1634 expected_lines: []const []const u8,
1635 ) void {
1636 for ([_]bool{ false, true }) |stage2| {
1637 const tc = self.create(false, "source.c", name, source, expected_lines);
1638 tc.stage2 = stage2;
1639 self.addCase(tc);
1640 }
1641 }
1642
1643 pub fn add_2(1620 pub fn add_2(
1644 self: *TranslateCContext,1621 self: *TranslateCContext,
1645 name: []const u8,1622 name: []const u8,
...@@ -1651,17 +1628,6 @@ pub const TranslateCContext = struct {...@@ -1651,17 +1628,6 @@ pub const TranslateCContext = struct {
1651 self.addCase(tc);1628 self.addCase(tc);
1652 }1629 }
16531630
1654 pub fn addC_2(
1655 self: *TranslateCContext,
1656 name: []const u8,
1657 source: []const u8,
1658 expected_lines: []const []const u8,
1659 ) void {
1660 const tc = self.create(false, "source.c", name, source, expected_lines);
1661 tc.stage2 = true;
1662 self.addCase(tc);
1663 }
1664
1665 pub fn addAllowWarnings(1631 pub fn addAllowWarnings(
1666 self: *TranslateCContext,1632 self: *TranslateCContext,
1667 name: []const u8,1633 name: []const u8,
test/translate_c.zig+109-114
...@@ -4,11 +4,8 @@ const builtin = @import("builtin");...@@ -4,11 +4,8 @@ const builtin = @import("builtin");
4// add_both - test for stage1 and stage2, in #include mode4// add_both - test for stage1 and stage2, in #include mode
5// add - test stage1 only, in #include mode5// add - test stage1 only, in #include mode
6// add_2 - test stage2 only, in #include mode6// add_2 - test stage2 only, in #include mode
7// addC_both - test for stage1 and stage2, in -c mode
8// addC - test stage1 only, in -c mode
9// addC_2 - test stage2 only, in -c mode
107
11pub fn addCases(cases: *tests.TranslateCContext) void {8pub export fn addCases(cases: *tests.TranslateCContext) void {
12 /////////////// Cases that pass for both stage1/stage2 ////////////////9 /////////////// Cases that pass for both stage1/stage2 ////////////////
13 cases.add_both("simple function prototypes",10 cases.add_both("simple function prototypes",
14 \\void __attribute__((noreturn)) foo(void);11 \\void __attribute__((noreturn)) foo(void);
...@@ -26,7 +23,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -26,7 +23,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
26 \\ const unsigned d = 440;23 \\ const unsigned d = 440;
27 \\}24 \\}
28 , &[_][]const u8{25 , &[_][]const u8{
29 \\pub fn foo() void {26 \\pub export fn foo() void {
30 \\ var a: c_int = undefined;27 \\ var a: c_int = undefined;
31 \\ var b: u8 = @as(u8, 123);28 \\ var b: u8 = @as(u8, 123);
32 \\ const c: c_int = undefined;29 \\ const c: c_int = undefined;
...@@ -44,7 +41,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -44,7 +41,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
44 \\ a = 1;41 \\ a = 1;
45 \\}42 \\}
46 , &[_][]const u8{43 , &[_][]const u8{
47 \\pub fn foo() void {44 \\pub export fn foo() void {
48 \\ var a: c_int = undefined;45 \\ var a: c_int = undefined;
49 \\ _ = 1;46 \\ _ = 1;
50 \\ _ = "hey";47 \\ _ = "hey";
...@@ -54,29 +51,42 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -54,29 +51,42 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
54 \\}51 \\}
55 });52 });
5653
54 cases.add_both("variables",
55 \\extern int extern_var;
56 \\static const int int_var = 13;
57 , &[_][]const u8{
58 \\pub extern var extern_var: c_int;
59 ,
60 \\pub const int_var: c_int = 13;
61 });
62
63 cases.add_both("const ptr initializer",
64 \\static const char *v0 = "0.0.0";
65 , &[_][]const u8{
66 \\pub var v0: [*c]const u8 = "0.0.0";
67 });
68
57 /////////////// Cases that pass for only stage2 ////////////////69 /////////////// Cases that pass for only stage2 ////////////////
58 // TODO: restore these tests after removing "import mode" concept70
59 // https://github.com/ziglang/zig/issues/278071 cases.add_2("Parameterless function prototypes",
6072 \\void a() {}
61 // cases.add_2("Parameterless function prototypes",73 \\void b(void) {}
62 // \\void a() {}74 \\void c();
63 // \\void b(void) {}75 \\void d(void);
64 // \\void c();76 , &[_][]const u8{
65 // \\void d(void);77 \\pub export fn a() void {}
66 // ,78 \\pub export fn b() void {}
67 // \\pub export fn a() void {}79 \\pub extern fn c(...) void;
68 // \\pub export fn b() void {}80 \\pub extern fn d() void;
69 // \\pub extern fn c(...) void;81 });
70 // \\pub extern fn d() void;82
71 // );83 cases.add_2("simple function definition",
7284 \\void foo(void) {}
73 // cases.add_2("simple function definition",85 \\static void bar(void) {}
74 // \\void foo(void) {}86 , &[_][]const u8{
75 // \\static void bar(void) {}87 \\pub export fn foo() void {}
76 // ,88 \\pub fn bar() void {}
77 // \\pub export fn foo() void {}89 });
78 // \\pub extern fn bar() void {}
79 // );
8090
81 cases.add_2("parameterless function prototypes",91 cases.add_2("parameterless function prototypes",
82 \\void a() {}92 \\void a() {}
...@@ -84,8 +94,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -84,8 +94,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
84 \\void c();94 \\void c();
85 \\void d(void);95 \\void d(void);
86 , &[_][]const u8{96 , &[_][]const u8{
87 \\pub fn a(...) void {}97 \\pub export fn a() void {}
88 \\pub fn b() void {}98 \\pub export fn b() void {}
89 \\pub extern fn c(...) void;99 \\pub extern fn c(...) void;
90 \\pub extern fn d() void;100 \\pub extern fn d() void;
91 });101 });
...@@ -124,7 +134,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -124,7 +134,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
124 \\void foo(void) {}134 \\void foo(void) {}
125 \\static void bar(void) {}135 \\static void bar(void) {}
126 , &[_][]const u8{136 , &[_][]const u8{
127 \\pub fn foo() void {}137 \\pub export fn foo() void {}
128 \\pub fn bar() void {}138 \\pub fn bar() void {}
129 });139 });
130140
...@@ -142,7 +152,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -142,7 +152,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
142 \\}152 \\}
143 , &[_][]const u8{153 , &[_][]const u8{
144 \\pub extern fn foo() void;154 \\pub extern fn foo() void;
145 \\pub fn bar() void {155 \\pub export fn bar() void {
146 \\ var func_ptr: ?*c_void = @ptrCast(?*c_void, foo);156 \\ var func_ptr: ?*c_void = @ptrCast(?*c_void, foo);
147 \\ var typed_func_ptr: ?extern fn () void = @intToPtr(?extern fn () void, @as(c_ulong, @ptrToInt(func_ptr)));157 \\ var typed_func_ptr: ?extern fn () void = @intToPtr(?extern fn () void, @as(c_ulong, @ptrToInt(func_ptr)));
148 \\}158 \\}
...@@ -212,7 +222,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -212,7 +222,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
212 \\ __PRETTY_FUNCTION__;222 \\ __PRETTY_FUNCTION__;
213 \\}223 \\}
214 , &[_][]const u8{224 , &[_][]const u8{
215 \\pub fn foo() void {225 \\pub export fn foo() void {
216 \\ _ = "foo";226 \\ _ = "foo";
217 \\ _ = "foo";227 \\ _ = "foo";
218 \\ _ = "void foo(void)";228 \\ _ = "void foo(void)";
...@@ -229,7 +239,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -229,7 +239,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
229 \\ a = 1;239 \\ a = 1;
230 \\}240 \\}
231 , &[_][]const u8{241 , &[_][]const u8{
232 \\pub fn foo() void {242 \\pub export fn foo() void {
233 \\ var a: c_int = undefined;243 \\ var a: c_int = undefined;
234 \\ _ = 1;244 \\ _ = 1;
235 \\ _ = "hey";245 \\ _ = "hey";
...@@ -244,7 +254,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -244,7 +254,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
244 \\ for (int x = 0; x < 10; x++);254 \\ for (int x = 0; x < 10; x++);
245 \\}255 \\}
246 , &[_][]const u8{256 , &[_][]const u8{
247 \\pub fn foo() void {257 \\pub export fn foo() void {
248 \\ {258 \\ {
249 \\ var x: c_int = 0;259 \\ var x: c_int = 0;
250 \\ while (x < 10) : (x += 1) {}260 \\ while (x < 10) : (x += 1) {}
...@@ -257,7 +267,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -257,7 +267,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
257 \\ do ; while (1);267 \\ do ; while (1);
258 \\}268 \\}
259 , &[_][]const u8{ // TODO this should be if (1 != 0) break269 , &[_][]const u8{ // TODO this should be if (1 != 0) break
260 \\pub fn foo() void {270 \\pub export fn foo() void {
261 \\ while (true) {271 \\ while (true) {
262 \\ {}272 \\ {}
263 \\ if (!1) break;273 \\ if (!1) break;
...@@ -270,7 +280,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -270,7 +280,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
270 \\ for (;;);280 \\ for (;;);
271 \\}281 \\}
272 , &[_][]const u8{282 , &[_][]const u8{
273 \\pub fn foo() void {283 \\pub export fn foo() void {
274 \\ while (true) {}284 \\ while (true) {}
275 \\}285 \\}
276 });286 });
...@@ -280,7 +290,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -280,7 +290,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
280 \\ while (1);290 \\ while (1);
281 \\}291 \\}
282 , &[_][]const u8{292 , &[_][]const u8{
283 \\pub fn foo() void {293 \\pub export fn foo() void {
284 \\ while (1 != 0) {}294 \\ while (1 != 0) {}
285 \\}295 \\}
286 });296 });
...@@ -326,7 +336,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -326,7 +336,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
326 \\pub extern fn foo() noreturn;336 \\pub extern fn foo() noreturn;
327 });337 });
328338
329 cases.addC("simple function",339 cases.add("simple function",
330 \\int abs(int a) {340 \\int abs(int a) {
331 \\ return a < 0 ? -a : a;341 \\ return a < 0 ? -a : a;
332 \\}342 \\}
...@@ -482,15 +492,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -482,15 +492,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
482 \\pub const THING2 = THING1;492 \\pub const THING2 = THING1;
483 });493 });
484494
485 cases.add("variables",
486 \\extern int extern_var;
487 \\static const int int_var = 13;
488 , &[_][]const u8{
489 \\pub extern var extern_var: c_int;
490 ,
491 \\pub const int_var: c_int = 13;
492 });
493
494 cases.add("circular struct definitions",495 cases.add("circular struct definitions",
495 \\struct Bar;496 \\struct Bar;
496 \\497 \\
...@@ -642,7 +643,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -642,7 +643,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
642 \\pub const LUA_GLOBALSINDEX = -10002;643 \\pub const LUA_GLOBALSINDEX = -10002;
643 });644 });
644645
645 cases.addC("post increment",646 cases.add("post increment",
646 \\unsigned foo1(unsigned a) {647 \\unsigned foo1(unsigned a) {
647 \\ a++;648 \\ a++;
648 \\ return a;649 \\ return a;
...@@ -664,7 +665,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -664,7 +665,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
664 \\}665 \\}
665 });666 });
666667
667 cases.addC("shift right assign",668 cases.add("shift right assign",
668 \\int log2(unsigned a) {669 \\int log2(unsigned a) {
669 \\ int i = 0;670 \\ int i = 0;
670 \\ while (a > 0) {671 \\ while (a > 0) {
...@@ -683,7 +684,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -683,7 +684,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
683 \\}684 \\}
684 });685 });
685686
686 cases.addC("if statement",687 cases.add("if statement",
687 \\int max(int a, int b) {688 \\int max(int a, int b) {
688 \\ if (a < b)689 \\ if (a < b)
689 \\ return b;690 \\ return b;
...@@ -703,7 +704,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -703,7 +704,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
703 \\}704 \\}
704 });705 });
705706
706 cases.addC("==, !=",707 cases.add("==, !=",
707 \\int max(int a, int b) {708 \\int max(int a, int b) {
708 \\ if (a == b)709 \\ if (a == b)
709 \\ return a;710 \\ return a;
...@@ -719,7 +720,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -719,7 +720,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
719 \\}720 \\}
720 });721 });
721722
722 cases.addC_both("add, sub, mul, div, rem",723 cases.add_both("add, sub, mul, div, rem",
723 \\int s(int a, int b) {724 \\int s(int a, int b) {
724 \\ int c;725 \\ int c;
725 \\ c = a + b;726 \\ c = a + b;
...@@ -755,7 +756,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -755,7 +756,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
755 \\}756 \\}
756 });757 });
757758
758 cases.addC("bitwise binary operators",759 cases.add("bitwise binary operators",
759 \\int max(int a, int b) {760 \\int max(int a, int b) {
760 \\ return (a & b) ^ (a | b);761 \\ return (a & b) ^ (a | b);
761 \\}762 \\}
...@@ -765,7 +766,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -765,7 +766,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
765 \\}766 \\}
766 });767 });
767768
768 cases.addC("logical and, logical or",769 cases.add("logical and, logical or",
769 \\int max(int a, int b) {770 \\int max(int a, int b) {
770 \\ if (a < b || a == b)771 \\ if (a < b || a == b)
771 \\ return b;772 \\ return b;
...@@ -781,7 +782,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -781,7 +782,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
781 \\}782 \\}
782 });783 });
783784
784 cases.addC("logical and, logical or on none bool values",785 cases.add("logical and, logical or on none bool values",
785 \\int and_or_none_bool(int a, float b, void *c) {786 \\int and_or_none_bool(int a, float b, void *c) {
786 \\ if (a && b) return 0;787 \\ if (a && b) return 0;
787 \\ if (b && c) return 1;788 \\ if (b && c) return 1;
...@@ -803,7 +804,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -803,7 +804,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
803 \\}804 \\}
804 });805 });
805806
806 cases.addC("assign",807 cases.add("assign",
807 \\int max(int a) {808 \\int max(int a) {
808 \\ int tmp;809 \\ int tmp;
809 \\ tmp = a;810 \\ tmp = a;
...@@ -818,7 +819,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -818,7 +819,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
818 \\}819 \\}
819 });820 });
820821
821 cases.addC("chaining assign",822 cases.add("chaining assign",
822 \\void max(int a) {823 \\void max(int a) {
823 \\ int b, c;824 \\ int b, c;
824 \\ c = b = a;825 \\ c = b = a;
...@@ -835,7 +836,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -835,7 +836,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
835 \\}836 \\}
836 });837 });
837838
838 cases.addC("shift right assign with a fixed size type",839 cases.add("shift right assign with a fixed size type",
839 \\#include <stdint.h>840 \\#include <stdint.h>
840 \\int log2(uint32_t a) {841 \\int log2(uint32_t a) {
841 \\ int i = 0;842 \\ int i = 0;
...@@ -865,7 +866,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -865,7 +866,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
865 \\pub const Two = 1;866 \\pub const Two = 1;
866 });867 });
867868
868 cases.addC("function call",869 cases.add("function call",
869 \\static void bar(void) { }870 \\static void bar(void) { }
870 \\static int baz(void) { return 0; }871 \\static int baz(void) { return 0; }
871 \\void foo(void) {872 \\void foo(void) {
...@@ -883,7 +884,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -883,7 +884,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
883 \\}884 \\}
884 });885 });
885886
886 cases.addC("field access expression",887 cases.add("field access expression",
887 \\struct Foo {888 \\struct Foo {
888 \\ int field;889 \\ int field;
889 \\};890 \\};
...@@ -899,7 +900,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -899,7 +900,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
899 \\}900 \\}
900 });901 });
901902
902 cases.addC("null statements",903 cases.add("null statements",
903 \\void foo(void) {904 \\void foo(void) {
904 \\ ;;;;;905 \\ ;;;;;
905 \\}906 \\}
...@@ -919,7 +920,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -919,7 +920,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
919 \\pub var array: [100]c_int = undefined;920 \\pub var array: [100]c_int = undefined;
920 });921 });
921922
922 cases.addC("array access",923 cases.add("array access",
923 \\int array[100];924 \\int array[100];
924 \\int foo(int index) {925 \\int foo(int index) {
925 \\ return array[index];926 \\ return array[index];
...@@ -931,7 +932,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -931,7 +932,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
931 \\}932 \\}
932 });933 });
933934
934 cases.addC("c style cast",935 cases.add("c style cast",
935 \\int float_to_int(float a) {936 \\int float_to_int(float a) {
936 \\ return (int)a;937 \\ return (int)a;
937 \\}938 \\}
...@@ -941,7 +942,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -941,7 +942,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
941 \\}942 \\}
942 });943 });
943944
944 cases.addC("void cast",945 cases.add("void cast",
945 \\void foo(int a) {946 \\void foo(int a) {
946 \\ (void) a;947 \\ (void) a;
947 \\}948 \\}
...@@ -951,7 +952,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -951,7 +952,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
951 \\}952 \\}
952 });953 });
953954
954 cases.addC("implicit cast to void *",955 cases.add("implicit cast to void *",
955 \\void *foo(unsigned short *x) {956 \\void *foo(unsigned short *x) {
956 \\ return x;957 \\ return x;
957 \\}958 \\}
...@@ -961,7 +962,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -961,7 +962,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
961 \\}962 \\}
962 });963 });
963964
964 cases.addC("sizeof",965 cases.add("sizeof",
965 \\#include <stddef.h>966 \\#include <stddef.h>
966 \\size_t size_of(void) {967 \\size_t size_of(void) {
967 \\ return sizeof(int);968 \\ return sizeof(int);
...@@ -972,7 +973,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -972,7 +973,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
972 \\}973 \\}
973 });974 });
974975
975 cases.addC("null pointer implicit cast",976 cases.add("null pointer implicit cast",
976 \\int* foo(void) {977 \\int* foo(void) {
977 \\ return 0;978 \\ return 0;
978 \\}979 \\}
...@@ -982,7 +983,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -982,7 +983,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
982 \\}983 \\}
983 });984 });
984985
985 cases.addC("comma operator",986 cases.add("comma operator",
986 \\int foo(void) {987 \\int foo(void) {
987 \\ return 1, 2;988 \\ return 1, 2;
988 \\}989 \\}
...@@ -995,7 +996,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -995,7 +996,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
995 \\}996 \\}
996 });997 });
997998
998 cases.addC("statement expression",999 cases.add("statement expression",
999 \\int foo(void) {1000 \\int foo(void) {
1000 \\ return ({1001 \\ return ({
1001 \\ int a = 1;1002 \\ int a = 1;
...@@ -1011,7 +1012,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1011,7 +1012,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1011 \\}1012 \\}
1012 });1013 });
10131014
1014 cases.addC("__extension__ cast",1015 cases.add("__extension__ cast",
1015 \\int foo(void) {1016 \\int foo(void) {
1016 \\ return __extension__ 1;1017 \\ return __extension__ 1;
1017 \\}1018 \\}
...@@ -1021,7 +1022,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1021,7 +1022,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1021 \\}1022 \\}
1022 });1023 });
10231024
1024 cases.addC("bitshift",1025 cases.add("bitshift",
1025 \\int foo(void) {1026 \\int foo(void) {
1026 \\ return (1 << 2) >> 1;1027 \\ return (1 << 2) >> 1;
1027 \\}1028 \\}
...@@ -1031,7 +1032,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1031,7 +1032,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1031 \\}1032 \\}
1032 });1033 });
10331034
1034 cases.addC("compound assignment operators",1035 cases.add("compound assignment operators",
1035 \\void foo(void) {1036 \\void foo(void) {
1036 \\ int a = 0;1037 \\ int a = 0;
1037 \\ a += (a += 1);1038 \\ a += (a += 1);
...@@ -1089,7 +1090,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1089,7 +1090,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1089 \\}1090 \\}
1090 });1091 });
10911092
1092 cases.addC("compound assignment operators unsigned",1093 cases.add("compound assignment operators unsigned",
1093 \\void foo(void) {1094 \\void foo(void) {
1094 \\ unsigned a = 0;1095 \\ unsigned a = 0;
1095 \\ a += (a += 1);1096 \\ a += (a += 1);
...@@ -1147,7 +1148,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1147,7 +1148,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1147 \\}1148 \\}
1148 });1149 });
11491150
1150 cases.addC("duplicate typedef",1151 cases.add("duplicate typedef",
1151 \\typedef long foo;1152 \\typedef long foo;
1152 \\typedef int bar;1153 \\typedef int bar;
1153 \\typedef long foo;1154 \\typedef long foo;
...@@ -1158,7 +1159,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1158,7 +1159,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1158 \\pub const baz = c_int;1159 \\pub const baz = c_int;
1159 });1160 });
11601161
1161 cases.addC("post increment/decrement",1162 cases.add("post increment/decrement",
1162 \\void foo(void) {1163 \\void foo(void) {
1163 \\ int i = 0;1164 \\ int i = 0;
1164 \\ unsigned u = 0;1165 \\ unsigned u = 0;
...@@ -1206,7 +1207,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1206,7 +1207,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1206 \\}1207 \\}
1207 });1208 });
12081209
1209 cases.addC("pre increment/decrement",1210 cases.add("pre increment/decrement",
1210 \\void foo(void) {1211 \\void foo(void) {
1211 \\ int i = 0;1212 \\ int i = 0;
1212 \\ unsigned u = 0;1213 \\ unsigned u = 0;
...@@ -1250,7 +1251,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1250,7 +1251,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1250 \\}1251 \\}
1251 });1252 });
12521253
1253 cases.addC("do loop",1254 cases.add("do loop",
1254 \\void foo(void) {1255 \\void foo(void) {
1255 \\ int a = 2;1256 \\ int a = 2;
1256 \\ do {1257 \\ do {
...@@ -1277,7 +1278,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1277,7 +1278,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1277 \\}1278 \\}
1278 });1279 });
12791280
1280 cases.addC("deref function pointer",1281 cases.add("deref function pointer",
1281 \\void foo(void) {}1282 \\void foo(void) {}
1282 \\int baz(void) { return 0; }1283 \\int baz(void) { return 0; }
1283 \\void bar(void) {1284 \\void bar(void) {
...@@ -1307,7 +1308,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1307,7 +1308,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1307 \\}1308 \\}
1308 });1309 });
13091310
1310 cases.addC("normal deref",1311 cases.add("normal deref",
1311 \\void foo(int *x) {1312 \\void foo(int *x) {
1312 \\ *x = 1;1313 \\ *x = 1;
1313 \\}1314 \\}
...@@ -1338,7 +1339,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1338,7 +1339,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1338 \\ return *ptr;1339 \\ return *ptr;
1339 \\}1340 \\}
1340 , &[_][]const u8{1341 , &[_][]const u8{
1341 \\pub fn foo() c_int {1342 \\pub export fn foo() c_int {
1342 \\ var x: c_int = 1234;1343 \\ var x: c_int = 1234;
1343 \\ var ptr: [*c]c_int = &x;1344 \\ var ptr: [*c]c_int = &x;
1344 \\ return ptr.?.*;1345 \\ return ptr.?.*;
...@@ -1350,7 +1351,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1350,7 +1351,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1350 \\ return "bar";1351 \\ return "bar";
1351 \\}1352 \\}
1352 , &[_][]const u8{1353 , &[_][]const u8{
1353 \\pub fn foo() [*c]const u8 {1354 \\pub export fn foo() [*c]const u8 {
1354 \\ return "bar";1355 \\ return "bar";
1355 \\}1356 \\}
1356 });1357 });
...@@ -1360,7 +1361,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1360,7 +1361,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1360 \\ return;1361 \\ return;
1361 \\}1362 \\}
1362 , &[_][]const u8{1363 , &[_][]const u8{
1363 \\pub fn foo() void {1364 \\pub export fn foo() void {
1364 \\ return;1365 \\ return;
1365 \\}1366 \\}
1366 });1367 });
...@@ -1370,7 +1371,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1370,7 +1371,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1370 \\ for (int i = 0; i < 10; i += 1) { }1371 \\ for (int i = 0; i < 10; i += 1) { }
1371 \\}1372 \\}
1372 , &[_][]const u8{1373 , &[_][]const u8{
1373 \\pub fn foo() void {1374 \\pub export fn foo() void {
1374 \\ {1375 \\ {
1375 \\ var i: c_int = 0;1376 \\ var i: c_int = 0;
1376 \\ while (i < 10) : (i += 1) {}1377 \\ while (i < 10) : (i += 1) {}
...@@ -1383,7 +1384,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1383,7 +1384,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1383 \\ for (;;) { }1384 \\ for (;;) { }
1384 \\}1385 \\}
1385 , &[_][]const u8{1386 , &[_][]const u8{
1386 \\pub fn foo() void {1387 \\pub export fn foo() void {
1387 \\ while (true) {}1388 \\ while (true) {}
1388 \\}1389 \\}
1389 });1390 });
...@@ -1395,7 +1396,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1395,7 +1396,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1395 \\ }1396 \\ }
1396 \\}1397 \\}
1397 , &[_][]const u8{1398 , &[_][]const u8{
1398 \\pub fn foo() void {1399 \\pub export fn foo() void {
1399 \\ while (true) {1400 \\ while (true) {
1400 \\ break;1401 \\ break;
1401 \\ }1402 \\ }
...@@ -1409,7 +1410,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1409,7 +1410,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1409 \\ }1410 \\ }
1410 \\}1411 \\}
1411 , &[_][]const u8{1412 , &[_][]const u8{
1412 \\pub fn foo() void {1413 \\pub export fn foo() void {
1413 \\ while (true) {1414 \\ while (true) {
1414 \\ continue;1415 \\ continue;
1415 \\ }1416 \\ }
...@@ -1464,7 +1465,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1464,7 +1465,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1464 \\ return x;1465 \\ return x;
1465 \\}1466 \\}
1466 , &[_][]const u8{1467 , &[_][]const u8{
1467 \\pub fn foo() c_int {1468 \\pub export fn foo() c_int {
1468 \\ var x: c_int = 1;1469 \\ var x: c_int = 1;
1469 \\ {1470 \\ {
1470 \\ var x_0: c_int = 2;1471 \\ var x_0: c_int = 2;
...@@ -1489,7 +1490,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1489,7 +1490,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1489 \\ return ~x;1490 \\ return ~x;
1490 \\}1491 \\}
1491 , &[_][]const u8{1492 , &[_][]const u8{
1492 \\pub fn foo(x: c_int) c_int {1493 \\pub export fn foo(x: c_int) c_int {
1493 \\ return ~x;1494 \\ return ~x;
1494 \\}1495 \\}
1495 });1496 });
...@@ -1502,7 +1503,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1502,7 +1503,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1502 \\ return !c;1503 \\ return !c;
1503 \\}1504 \\}
1504 , &[_][]const u8{1505 , &[_][]const u8{
1505 \\pub fn foo(a: c_int, b: f32, c: ?*c_void) c_int {1506 \\pub export fn foo(a: c_int, b: f32, c: ?*c_void) c_int {
1506 \\ return !(a == 0);1507 \\ return !(a == 0);
1507 \\ return !(a != 0);1508 \\ return !(a != 0);
1508 \\ return !(b != 0);1509 \\ return !(b != 0);
...@@ -1515,23 +1516,17 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1515,23 +1516,17 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1515 \\ return u32;1516 \\ return u32;
1516 \\}1517 \\}
1517 , &[_][]const u8{1518 , &[_][]const u8{
1518 \\pub fn foo(u32_0: c_int) c_int {1519 \\pub export fn foo(u32_0: c_int) c_int {
1519 \\ return u32_0;1520 \\ return u32_0;
1520 \\}1521 \\}
1521 });1522 });
15221523
1523 cases.add("const ptr initializer",
1524 \\static const char *v0 = "0.0.0";
1525 , &[_][]const u8{
1526 \\pub var v0: [*c]const u8 = "0.0.0";
1527 });
1528
1529 cases.add("static incomplete array inside function",1524 cases.add("static incomplete array inside function",
1530 \\void foo(void) {1525 \\void foo(void) {
1531 \\ static const char v2[] = "2.2.2";1526 \\ static const char v2[] = "2.2.2";
1532 \\}1527 \\}
1533 , &[_][]const u8{1528 , &[_][]const u8{
1534 \\pub fn foo() void {1529 \\pub export fn foo() void {
1535 \\ const v2: [*c]const u8 = "2.2.2";1530 \\ const v2: [*c]const u8 = "2.2.2";
1536 \\}1531 \\}
1537 });1532 });
...@@ -1560,7 +1555,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1560,7 +1555,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1560 \\ B,1555 \\ B,
1561 \\ C,1556 \\ C,
1562 \\};1557 \\};
1563 \\pub fn if_none_bool(a: c_int, b: f32, c: ?*c_void, d: enum_SomeEnum) c_int {1558 \\pub export fn if_none_bool(a: c_int, b: f32, c: ?*c_void, d: enum_SomeEnum) c_int {
1564 \\ if (a != 0) return 0;1559 \\ if (a != 0) return 0;
1565 \\ if (b != 0) return 1;1560 \\ if (b != 0) return 1;
1566 \\ if (c != null) return 2;1561 \\ if (c != null) return 2;
...@@ -1577,7 +1572,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1577,7 +1572,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1577 \\ return 3;1572 \\ return 3;
1578 \\}1573 \\}
1579 , &[_][]const u8{1574 , &[_][]const u8{
1580 \\pub fn while_none_bool(a: c_int, b: f32, c: ?*c_void) c_int {1575 \\pub export fn while_none_bool(a: c_int, b: f32, c: ?*c_void) c_int {
1581 \\ while (a != 0) return 0;1576 \\ while (a != 0) return 0;
1582 \\ while (b != 0) return 1;1577 \\ while (b != 0) return 1;
1583 \\ while (c != null) return 2;1578 \\ while (c != null) return 2;
...@@ -1593,7 +1588,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1593,7 +1588,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1593 \\ return 3;1588 \\ return 3;
1594 \\}1589 \\}
1595 , &[_][]const u8{1590 , &[_][]const u8{
1596 \\pub fn for_none_bool(a: c_int, b: f32, c: ?*c_void) c_int {1591 \\pub export fn for_none_bool(a: c_int, b: f32, c: ?*c_void) c_int {
1597 \\ while (a != 0) return 0;1592 \\ while (a != 0) return 0;
1598 \\ while (b != 0) return 1;1593 \\ while (b != 0) return 1;
1599 \\ while (c != null) return 2;1594 \\ while (c != null) return 2;
...@@ -1617,7 +1612,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1617,7 +1612,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1617 \\ }1612 \\ }
1618 \\}1613 \\}
1619 , &[_][]const u8{1614 , &[_][]const u8{
1620 \\pub fn switch_fn(i: c_int) c_int {1615 \\pub export fn switch_fn(i: c_int) c_int {
1621 \\ var res: c_int = 0;1616 \\ var res: c_int = 0;
1622 \\ __switch: {1617 \\ __switch: {
1623 \\ __case_2: {1618 \\ __case_2: {
...@@ -1643,7 +1638,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1643,7 +1638,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1643 \\}1638 \\}
1644 });1639 });
16451640
1646 cases.addC(1641 cases.add(
1647 "u integer suffix after 0 (zero) in macro definition",1642 "u integer suffix after 0 (zero) in macro definition",
1648 "#define ZERO 0U",1643 "#define ZERO 0U",
1649 &[_][]const u8{1644 &[_][]const u8{
...@@ -1651,7 +1646,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1651,7 +1646,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1651 },1646 },
1652 );1647 );
16531648
1654 cases.addC(1649 cases.add(
1655 "l integer suffix after 0 (zero) in macro definition",1650 "l integer suffix after 0 (zero) in macro definition",
1656 "#define ZERO 0L",1651 "#define ZERO 0L",
1657 &[_][]const u8{1652 &[_][]const u8{
...@@ -1659,7 +1654,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1659,7 +1654,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1659 },1654 },
1660 );1655 );
16611656
1662 cases.addC(1657 cases.add(
1663 "ul integer suffix after 0 (zero) in macro definition",1658 "ul integer suffix after 0 (zero) in macro definition",
1664 "#define ZERO 0UL",1659 "#define ZERO 0UL",
1665 &[_][]const u8{1660 &[_][]const u8{
...@@ -1667,7 +1662,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1667,7 +1662,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1667 },1662 },
1668 );1663 );
16691664
1670 cases.addC(1665 cases.add(
1671 "lu integer suffix after 0 (zero) in macro definition",1666 "lu integer suffix after 0 (zero) in macro definition",
1672 "#define ZERO 0LU",1667 "#define ZERO 0LU",
1673 &[_][]const u8{1668 &[_][]const u8{
...@@ -1675,7 +1670,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1675,7 +1670,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1675 },1670 },
1676 );1671 );
16771672
1678 cases.addC(1673 cases.add(
1679 "ll integer suffix after 0 (zero) in macro definition",1674 "ll integer suffix after 0 (zero) in macro definition",
1680 "#define ZERO 0LL",1675 "#define ZERO 0LL",
1681 &[_][]const u8{1676 &[_][]const u8{
...@@ -1683,7 +1678,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1683,7 +1678,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1683 },1678 },
1684 );1679 );
16851680
1686 cases.addC(1681 cases.add(
1687 "ull integer suffix after 0 (zero) in macro definition",1682 "ull integer suffix after 0 (zero) in macro definition",
1688 "#define ZERO 0ULL",1683 "#define ZERO 0ULL",
1689 &[_][]const u8{1684 &[_][]const u8{
...@@ -1691,7 +1686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1691,7 +1686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1691 },1686 },
1692 );1687 );
16931688
1694 cases.addC(1689 cases.add(
1695 "llu integer suffix after 0 (zero) in macro definition",1690 "llu integer suffix after 0 (zero) in macro definition",
1696 "#define ZERO 0LLU",1691 "#define ZERO 0LLU",
1697 &[_][]const u8{1692 &[_][]const u8{
...@@ -1699,7 +1694,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1699,7 +1694,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1699 },1694 },
1700 );1695 );
17011696
1702 cases.addC(1697 cases.add(
1703 "bitwise not on u-suffixed 0 (zero) in macro definition",1698 "bitwise not on u-suffixed 0 (zero) in macro definition",
1704 "#define NOT_ZERO (~0U)",1699 "#define NOT_ZERO (~0U)",
1705 &[_][]const u8{1700 &[_][]const u8{
...@@ -1707,7 +1702,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1707,7 +1702,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1707 },1702 },
1708 );1703 );
17091704
1710 cases.addC("implicit casts",1705 cases.add("implicit casts",
1711 \\#include <stdbool.h>1706 \\#include <stdbool.h>
1712 \\1707 \\
1713 \\void fn_int(int x);1708 \\void fn_int(int x);
...@@ -1762,7 +1757,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1762,7 +1757,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1762 \\}1757 \\}
1763 });1758 });
17641759
1765 cases.addC("pointer conversion with different alignment",1760 cases.add("pointer conversion with different alignment",
1766 \\void test_ptr_cast() {1761 \\void test_ptr_cast() {
1767 \\ void *p;1762 \\ void *p;
1768 \\ {1763 \\ {
...@@ -1796,7 +1791,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1796,7 +1791,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1796 \\}1791 \\}
1797 });1792 });
17981793
1799 cases.addC("escape sequences",1794 cases.add("escape sequences",
1800 \\const char *escapes() {1795 \\const char *escapes() {
1801 \\char a = '\'',1796 \\char a = '\'',
1802 \\ b = '\\',1797 \\ b = '\\',
...@@ -1840,7 +1835,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -1840,7 +1835,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
1840 }1835 }
18411836
1842 /////////////// Cases for only stage1 because stage2 behavior is better ////////////////1837 /////////////// Cases for only stage1 because stage2 behavior is better ////////////////
1843 cases.addC("Parameterless function prototypes",1838 cases.add("Parameterless function prototypes",
1844 \\void foo() {}1839 \\void foo() {}
1845 \\void bar(void) {}1840 \\void bar(void) {}
1846 , &[_][]const u8{1841 , &[_][]const u8{