| ... | @@ -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 mode | 4 | // add_both - test for stage1 and stage2, in #include mode |
| 5 | // add - test stage1 only, in #include mode | 5 | // add - test stage1 only, in #include mode |
| 6 | // add_2 - test stage2 only, in #include mode | 6 | // 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 | | |
| 10 | | 7 | |
| 11 | pub fn addCases(cases: *tests.TranslateCContext) void { | 8 | pub 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 | }); |
| 56 | | 53 | |
| | 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" concept | 70 | |
| 59 | // https://github.com/ziglang/zig/issues/2780 | 71 | cases.add_2("Parameterless function prototypes", |
| 60 | | 72 | \\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", |
| 72 | | 84 | \\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 | // ); | | |
| 80 | | 90 | |
| 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 | }); |
| 130 | | 140 | |
| ... | @@ -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) break | 269 | , &[_][]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 | }); |
| 328 | | 338 | |
| 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 | }); |
| 484 | | 494 | |
| 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 | }); |
| 644 | | 645 | |
| 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 | }); |
| 666 | | 667 | |
| 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 | }); |
| 685 | | 686 | |
| 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 | }); |
| 705 | | 706 | |
| 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 | }); |
| 721 | | 722 | |
| 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 | }); |
| 757 | | 758 | |
| 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 | }); |
| 767 | | 768 | |
| 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 | }); |
| 783 | | 784 | |
| 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 | }); |
| 805 | | 806 | |
| 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 | }); |
| 820 | | 821 | |
| 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 | }); |
| 837 | | 838 | |
| 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 | }); |
| 867 | | 868 | |
| 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 | }); |
| 885 | | 886 | |
| 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 | }); |
| 901 | | 902 | |
| 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 | }); |
| 921 | | 922 | |
| 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 | }); |
| 933 | | 934 | |
| 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 | }); |
| 943 | | 944 | |
| 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 | }); |
| 953 | | 954 | |
| 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 | }); |
| 963 | | 964 | |
| 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 | }); |
| 974 | | 975 | |
| 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 | }); |
| 984 | | 985 | |
| 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 | }); |
| 997 | | 998 | |
| 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 | }); |
| 1013 | | 1014 | |
| 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 | }); |
| 1023 | | 1024 | |
| 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 | }); |
| 1033 | | 1034 | |
| 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 | }); |
| 1091 | | 1092 | |
| 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 | }); |
| 1149 | | 1150 | |
| 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 | }); |
| 1160 | | 1161 | |
| 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 | }); |
| 1208 | | 1209 | |
| 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 | }); |
| 1252 | | 1253 | |
| 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 | }); |
| 1279 | | 1280 | |
| 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 | }); |
| 1309 | | 1310 | |
| 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 | }); |
| 1522 | | 1523 | |
| 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 | }); |
| 1645 | | 1640 | |
| 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 | ); |
| 1653 | | 1648 | |
| 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 | ); |
| 1661 | | 1656 | |
| 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 | ); |
| 1669 | | 1664 | |
| 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 | ); |
| 1677 | | 1672 | |
| 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 | ); |
| 1685 | | 1680 | |
| 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 | ); |
| 1693 | | 1688 | |
| 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 | ); |
| 1701 | | 1696 | |
| 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 | ); |
| 1709 | | 1704 | |
| 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 | }); |
| 1764 | | 1759 | |
| 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 | }); |
| 1798 | | 1793 | |
| 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 | } |
| 1841 | | 1836 | |
| 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{ |