| ... | ... | @@ -1,9 +1,11 @@ |
| 1 | 1 | const tests = @import("tests.zig"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | | // add_both - test for stage1 and stage2 |
| 5 | | // add - test stage1 only |
| 4 | // add_both - test for stage1 and stage2, in #include mode |
| 5 | // add - test stage1 only, in #include mode |
| 6 | 6 | // add_2 - test stage2 only |
| 7 | // addC_both - test for stage1 and stage2, in -c mode |
| 8 | // addC - test stage1 only, in -c mode |
| 7 | 9 | |
| 8 | 10 | pub fn addCases(cases: *tests.TranslateCContext) void { |
| 9 | 11 | /////////////// Cases that pass for both stage1/stage2 //////////////// |
| ... | ... | @@ -15,7 +17,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 15 | 17 | \\pub extern fn bar() c_int; |
| 16 | 18 | }); |
| 17 | 19 | |
| 18 | | cases.add_both("simple var decls", |
| 20 | cases.addC_both("simple var decls", |
| 19 | 21 | \\void foo(void) { |
| 20 | 22 | \\ int a; |
| 21 | 23 | \\ char b = 123; |
| ... | ... | @@ -31,7 +33,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 31 | 33 | \\} |
| 32 | 34 | }); |
| 33 | 35 | |
| 34 | | cases.add_both("ignore result, explicit function arguments", |
| 36 | cases.addC_both("ignore result, explicit function arguments", |
| 35 | 37 | \\void foo(void) { |
| 36 | 38 | \\ int a; |
| 37 | 39 | \\ 1; |
| ... | ... | @@ -51,7 +53,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 51 | 53 | \\} |
| 52 | 54 | }); |
| 53 | 55 | |
| 54 | | cases.add_both("variables", |
| 56 | cases.addC_both("variables", |
| 55 | 57 | \\extern int extern_var; |
| 56 | 58 | \\static const int int_var = 13; |
| 57 | 59 | , &[_][]const u8{ |
| ... | ... | @@ -66,7 +68,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 66 | 68 | \\pub var v0: [*c]const u8 = "0.0.0"; |
| 67 | 69 | }); |
| 68 | 70 | |
| 69 | | cases.add_both("static incomplete array inside function", |
| 71 | cases.addC_both("static incomplete array inside function", |
| 70 | 72 | \\void foo(void) { |
| 71 | 73 | \\ static const char v2[] = "2.2.2"; |
| 72 | 74 | \\} |
| ... | ... | @@ -76,7 +78,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 76 | 78 | \\} |
| 77 | 79 | }); |
| 78 | 80 | |
| 79 | | cases.add_both("simple function definition", |
| 81 | cases.addC_both("simple function definition", |
| 80 | 82 | \\void foo(void) {} |
| 81 | 83 | \\static void bar(void) {} |
| 82 | 84 | , &[_][]const u8{ |
| ... | ... | @@ -104,7 +106,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 104 | 106 | \\pub const baz = c_int; |
| 105 | 107 | }); |
| 106 | 108 | |
| 107 | | cases.add_both("casting pointers to ints and ints to pointers", |
| 109 | cases.addC_both("casting pointers to ints and ints to pointers", |
| 108 | 110 | \\void foo(void); |
| 109 | 111 | \\void bar(void) { |
| 110 | 112 | \\ void *func_ptr = foo; |
| ... | ... | @@ -124,7 +126,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 124 | 126 | \\pub extern fn foo() noreturn; |
| 125 | 127 | }); |
| 126 | 128 | |
| 127 | | cases.add_both("add, sub, mul, div, rem", |
| 129 | cases.addC_both("add, sub, mul, div, rem", |
| 128 | 130 | \\int s(int a, int b) { |
| 129 | 131 | \\ int c; |
| 130 | 132 | \\ c = a + b; |
| ... | ... | @@ -284,7 +286,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 284 | 286 | \\ __PRETTY_FUNCTION__; |
| 285 | 287 | \\} |
| 286 | 288 | , &[_][]const u8{ |
| 287 | | \\pub export fn foo() void { |
| 289 | \\pub fn foo() void { |
| 288 | 290 | \\ _ = "foo"; |
| 289 | 291 | \\ _ = "foo"; |
| 290 | 292 | \\ _ = "void foo(void)"; |
| ... | ... | @@ -301,7 +303,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 301 | 303 | \\ a = 1; |
| 302 | 304 | \\} |
| 303 | 305 | , &[_][]const u8{ |
| 304 | | \\pub export fn foo() void { |
| 306 | \\pub fn foo() void { |
| 305 | 307 | \\ var a: c_int = undefined; |
| 306 | 308 | \\ _ = 1; |
| 307 | 309 | \\ _ = "hey"; |
| ... | ... | @@ -316,7 +318,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 316 | 318 | \\ for (int x = 0; x < 10; x++); |
| 317 | 319 | \\} |
| 318 | 320 | , &[_][]const u8{ |
| 319 | | \\pub export fn foo() void { |
| 321 | \\pub fn foo() void { |
| 320 | 322 | \\ { |
| 321 | 323 | \\ var x: c_int = 0; |
| 322 | 324 | \\ while (x < 10) : (x += 1) {} |
| ... | ... | @@ -329,7 +331,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 329 | 331 | \\ do ; while (1); |
| 330 | 332 | \\} |
| 331 | 333 | , &[_][]const u8{ // TODO this should be if (1 != 0) break |
| 332 | | \\pub export fn foo() void { |
| 334 | \\pub fn foo() void { |
| 333 | 335 | \\ while (true) { |
| 334 | 336 | \\ {} |
| 335 | 337 | \\ if (!1) break; |
| ... | ... | @@ -342,7 +344,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 342 | 344 | \\ for (;;); |
| 343 | 345 | \\} |
| 344 | 346 | , &[_][]const u8{ |
| 345 | | \\pub export fn foo() void { |
| 347 | \\pub fn foo() void { |
| 346 | 348 | \\ while (true) {} |
| 347 | 349 | \\} |
| 348 | 350 | }); |
| ... | ... | @@ -352,7 +354,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 352 | 354 | \\ while (1); |
| 353 | 355 | \\} |
| 354 | 356 | , &[_][]const u8{ |
| 355 | | \\pub export fn foo() void { |
| 357 | \\pub fn foo() void { |
| 356 | 358 | \\ while (1 != 0) {} |
| 357 | 359 | \\} |
| 358 | 360 | }); |
| ... | ... | @@ -392,7 +394,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 392 | 394 | \\pub extern fn baz(a: i8, b: i16, c: i32, d: i64) void; |
| 393 | 395 | }); |
| 394 | 396 | |
| 395 | | cases.add("simple function", |
| 397 | cases.addC("simple function", |
| 396 | 398 | \\int abs(int a) { |
| 397 | 399 | \\ return a < 0 ? -a : a; |
| 398 | 400 | \\} |
| ... | ... | @@ -690,7 +692,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 690 | 692 | \\pub const LUA_GLOBALSINDEX = -10002; |
| 691 | 693 | }); |
| 692 | 694 | |
| 693 | | cases.add("post increment", |
| 695 | cases.addC("post increment", |
| 694 | 696 | \\unsigned foo1(unsigned a) { |
| 695 | 697 | \\ a++; |
| 696 | 698 | \\ return a; |
| ... | ... | @@ -712,7 +714,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 712 | 714 | \\} |
| 713 | 715 | }); |
| 714 | 716 | |
| 715 | | cases.add("shift right assign", |
| 717 | cases.addC("shift right assign", |
| 716 | 718 | \\int log2(unsigned a) { |
| 717 | 719 | \\ int i = 0; |
| 718 | 720 | \\ while (a > 0) { |
| ... | ... | @@ -731,7 +733,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 731 | 733 | \\} |
| 732 | 734 | }); |
| 733 | 735 | |
| 734 | | cases.add("if statement", |
| 736 | cases.addC("if statement", |
| 735 | 737 | \\int max(int a, int b) { |
| 736 | 738 | \\ if (a < b) |
| 737 | 739 | \\ return b; |
| ... | ... | @@ -751,7 +753,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 751 | 753 | \\} |
| 752 | 754 | }); |
| 753 | 755 | |
| 754 | | cases.add("==, !=", |
| 756 | cases.addC("==, !=", |
| 755 | 757 | \\int max(int a, int b) { |
| 756 | 758 | \\ if (a == b) |
| 757 | 759 | \\ return a; |
| ... | ... | @@ -767,7 +769,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 767 | 769 | \\} |
| 768 | 770 | }); |
| 769 | 771 | |
| 770 | | cases.add("bitwise binary operators", |
| 772 | cases.addC("bitwise binary operators", |
| 771 | 773 | \\int max(int a, int b) { |
| 772 | 774 | \\ return (a & b) ^ (a | b); |
| 773 | 775 | \\} |
| ... | ... | @@ -777,7 +779,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 777 | 779 | \\} |
| 778 | 780 | }); |
| 779 | 781 | |
| 780 | | cases.add("logical and, logical or", |
| 782 | cases.addC("logical and, logical or", |
| 781 | 783 | \\int max(int a, int b) { |
| 782 | 784 | \\ if (a < b || a == b) |
| 783 | 785 | \\ return b; |
| ... | ... | @@ -793,7 +795,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 793 | 795 | \\} |
| 794 | 796 | }); |
| 795 | 797 | |
| 796 | | cases.add("logical and, logical or on none bool values", |
| 798 | cases.addC("logical and, logical or on none bool values", |
| 797 | 799 | \\int and_or_none_bool(int a, float b, void *c) { |
| 798 | 800 | \\ if (a && b) return 0; |
| 799 | 801 | \\ if (b && c) return 1; |
| ... | ... | @@ -815,7 +817,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 815 | 817 | \\} |
| 816 | 818 | }); |
| 817 | 819 | |
| 818 | | cases.add("assign", |
| 820 | cases.addC("assign", |
| 819 | 821 | \\int max(int a) { |
| 820 | 822 | \\ int tmp; |
| 821 | 823 | \\ tmp = a; |
| ... | ... | @@ -830,7 +832,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 830 | 832 | \\} |
| 831 | 833 | }); |
| 832 | 834 | |
| 833 | | cases.add("chaining assign", |
| 835 | cases.addC("chaining assign", |
| 834 | 836 | \\void max(int a) { |
| 835 | 837 | \\ int b, c; |
| 836 | 838 | \\ c = b = a; |
| ... | ... | @@ -847,7 +849,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 847 | 849 | \\} |
| 848 | 850 | }); |
| 849 | 851 | |
| 850 | | cases.add("shift right assign with a fixed size type", |
| 852 | cases.addC("shift right assign with a fixed size type", |
| 851 | 853 | \\#include <stdint.h> |
| 852 | 854 | \\int log2(uint32_t a) { |
| 853 | 855 | \\ int i = 0; |
| ... | ... | @@ -877,7 +879,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 877 | 879 | \\pub const Two = 1; |
| 878 | 880 | }); |
| 879 | 881 | |
| 880 | | cases.add("function call", |
| 882 | cases.addC("function call", |
| 881 | 883 | \\static void bar(void) { } |
| 882 | 884 | \\static int baz(void) { return 0; } |
| 883 | 885 | \\void foo(void) { |
| ... | ... | @@ -895,7 +897,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 895 | 897 | \\} |
| 896 | 898 | }); |
| 897 | 899 | |
| 898 | | cases.add("field access expression", |
| 900 | cases.addC("field access expression", |
| 899 | 901 | \\struct Foo { |
| 900 | 902 | \\ int field; |
| 901 | 903 | \\}; |
| ... | ... | @@ -911,7 +913,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 911 | 913 | \\} |
| 912 | 914 | }); |
| 913 | 915 | |
| 914 | | cases.add("null statements", |
| 916 | cases.addC("null statements", |
| 915 | 917 | \\void foo(void) { |
| 916 | 918 | \\ ;;;;; |
| 917 | 919 | \\} |
| ... | ... | @@ -931,7 +933,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 931 | 933 | \\pub var array: [100]c_int = undefined; |
| 932 | 934 | }); |
| 933 | 935 | |
| 934 | | cases.add("array access", |
| 936 | cases.addC("array access", |
| 935 | 937 | \\int array[100]; |
| 936 | 938 | \\int foo(int index) { |
| 937 | 939 | \\ return array[index]; |
| ... | ... | @@ -943,7 +945,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 943 | 945 | \\} |
| 944 | 946 | }); |
| 945 | 947 | |
| 946 | | cases.add("c style cast", |
| 948 | cases.addC("c style cast", |
| 947 | 949 | \\int float_to_int(float a) { |
| 948 | 950 | \\ return (int)a; |
| 949 | 951 | \\} |
| ... | ... | @@ -953,7 +955,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 953 | 955 | \\} |
| 954 | 956 | }); |
| 955 | 957 | |
| 956 | | cases.add("void cast", |
| 958 | cases.addC("void cast", |
| 957 | 959 | \\void foo(int a) { |
| 958 | 960 | \\ (void) a; |
| 959 | 961 | \\} |
| ... | ... | @@ -963,7 +965,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 963 | 965 | \\} |
| 964 | 966 | }); |
| 965 | 967 | |
| 966 | | cases.add("implicit cast to void *", |
| 968 | cases.addC("implicit cast to void *", |
| 967 | 969 | \\void *foo(unsigned short *x) { |
| 968 | 970 | \\ return x; |
| 969 | 971 | \\} |
| ... | ... | @@ -973,7 +975,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 973 | 975 | \\} |
| 974 | 976 | }); |
| 975 | 977 | |
| 976 | | cases.add("sizeof", |
| 978 | cases.addC("sizeof", |
| 977 | 979 | \\#include <stddef.h> |
| 978 | 980 | \\size_t size_of(void) { |
| 979 | 981 | \\ return sizeof(int); |
| ... | ... | @@ -984,7 +986,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 984 | 986 | \\} |
| 985 | 987 | }); |
| 986 | 988 | |
| 987 | | cases.add("null pointer implicit cast", |
| 989 | cases.addC("null pointer implicit cast", |
| 988 | 990 | \\int* foo(void) { |
| 989 | 991 | \\ return 0; |
| 990 | 992 | \\} |
| ... | ... | @@ -994,7 +996,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 994 | 996 | \\} |
| 995 | 997 | }); |
| 996 | 998 | |
| 997 | | cases.add("comma operator", |
| 999 | cases.addC("comma operator", |
| 998 | 1000 | \\int foo(void) { |
| 999 | 1001 | \\ return 1, 2; |
| 1000 | 1002 | \\} |
| ... | ... | @@ -1007,7 +1009,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1007 | 1009 | \\} |
| 1008 | 1010 | }); |
| 1009 | 1011 | |
| 1010 | | cases.add("statement expression", |
| 1012 | cases.addC("statement expression", |
| 1011 | 1013 | \\int foo(void) { |
| 1012 | 1014 | \\ return ({ |
| 1013 | 1015 | \\ int a = 1; |
| ... | ... | @@ -1023,7 +1025,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1023 | 1025 | \\} |
| 1024 | 1026 | }); |
| 1025 | 1027 | |
| 1026 | | cases.add("__extension__ cast", |
| 1028 | cases.addC("__extension__ cast", |
| 1027 | 1029 | \\int foo(void) { |
| 1028 | 1030 | \\ return __extension__ 1; |
| 1029 | 1031 | \\} |
| ... | ... | @@ -1033,7 +1035,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1033 | 1035 | \\} |
| 1034 | 1036 | }); |
| 1035 | 1037 | |
| 1036 | | cases.add("bitshift", |
| 1038 | cases.addC("bitshift", |
| 1037 | 1039 | \\int foo(void) { |
| 1038 | 1040 | \\ return (1 << 2) >> 1; |
| 1039 | 1041 | \\} |
| ... | ... | @@ -1043,7 +1045,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1043 | 1045 | \\} |
| 1044 | 1046 | }); |
| 1045 | 1047 | |
| 1046 | | cases.add("compound assignment operators", |
| 1048 | cases.addC("compound assignment operators", |
| 1047 | 1049 | \\void foo(void) { |
| 1048 | 1050 | \\ int a = 0; |
| 1049 | 1051 | \\ a += (a += 1); |
| ... | ... | @@ -1101,7 +1103,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1101 | 1103 | \\} |
| 1102 | 1104 | }); |
| 1103 | 1105 | |
| 1104 | | cases.add("compound assignment operators unsigned", |
| 1106 | cases.addC("compound assignment operators unsigned", |
| 1105 | 1107 | \\void foo(void) { |
| 1106 | 1108 | \\ unsigned a = 0; |
| 1107 | 1109 | \\ a += (a += 1); |
| ... | ... | @@ -1159,7 +1161,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1159 | 1161 | \\} |
| 1160 | 1162 | }); |
| 1161 | 1163 | |
| 1162 | | cases.add("post increment/decrement", |
| 1164 | cases.addC("post increment/decrement", |
| 1163 | 1165 | \\void foo(void) { |
| 1164 | 1166 | \\ int i = 0; |
| 1165 | 1167 | \\ unsigned u = 0; |
| ... | ... | @@ -1207,7 +1209,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1207 | 1209 | \\} |
| 1208 | 1210 | }); |
| 1209 | 1211 | |
| 1210 | | cases.add("pre increment/decrement", |
| 1212 | cases.addC("pre increment/decrement", |
| 1211 | 1213 | \\void foo(void) { |
| 1212 | 1214 | \\ int i = 0; |
| 1213 | 1215 | \\ unsigned u = 0; |
| ... | ... | @@ -1251,7 +1253,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1251 | 1253 | \\} |
| 1252 | 1254 | }); |
| 1253 | 1255 | |
| 1254 | | cases.add("do loop", |
| 1256 | cases.addC("do loop", |
| 1255 | 1257 | \\void foo(void) { |
| 1256 | 1258 | \\ int a = 2; |
| 1257 | 1259 | \\ do { |
| ... | ... | @@ -1278,7 +1280,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1278 | 1280 | \\} |
| 1279 | 1281 | }); |
| 1280 | 1282 | |
| 1281 | | cases.add("deref function pointer", |
| 1283 | cases.addC("deref function pointer", |
| 1282 | 1284 | \\void foo(void) {} |
| 1283 | 1285 | \\int baz(void) { return 0; } |
| 1284 | 1286 | \\void bar(void) { |
| ... | ... | @@ -1308,7 +1310,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1308 | 1310 | \\} |
| 1309 | 1311 | }); |
| 1310 | 1312 | |
| 1311 | | cases.add("normal deref", |
| 1313 | cases.addC("normal deref", |
| 1312 | 1314 | \\void foo(int *x) { |
| 1313 | 1315 | \\ *x = 1; |
| 1314 | 1316 | \\} |
| ... | ... | @@ -1339,7 +1341,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1339 | 1341 | \\ return *ptr; |
| 1340 | 1342 | \\} |
| 1341 | 1343 | , &[_][]const u8{ |
| 1342 | | \\pub export fn foo() c_int { |
| 1344 | \\pub fn foo() c_int { |
| 1343 | 1345 | \\ var x: c_int = 1234; |
| 1344 | 1346 | \\ var ptr: [*c]c_int = &x; |
| 1345 | 1347 | \\ return ptr.?.*; |
| ... | ... | @@ -1351,7 +1353,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1351 | 1353 | \\ return "bar"; |
| 1352 | 1354 | \\} |
| 1353 | 1355 | , &[_][]const u8{ |
| 1354 | | \\pub export fn foo() [*c]const u8 { |
| 1356 | \\pub fn foo() [*c]const u8 { |
| 1355 | 1357 | \\ return "bar"; |
| 1356 | 1358 | \\} |
| 1357 | 1359 | }); |
| ... | ... | @@ -1361,7 +1363,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1361 | 1363 | \\ return; |
| 1362 | 1364 | \\} |
| 1363 | 1365 | , &[_][]const u8{ |
| 1364 | | \\pub export fn foo() void { |
| 1366 | \\pub fn foo() void { |
| 1365 | 1367 | \\ return; |
| 1366 | 1368 | \\} |
| 1367 | 1369 | }); |
| ... | ... | @@ -1371,7 +1373,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1371 | 1373 | \\ for (int i = 0; i < 10; i += 1) { } |
| 1372 | 1374 | \\} |
| 1373 | 1375 | , &[_][]const u8{ |
| 1374 | | \\pub export fn foo() void { |
| 1376 | \\pub fn foo() void { |
| 1375 | 1377 | \\ { |
| 1376 | 1378 | \\ var i: c_int = 0; |
| 1377 | 1379 | \\ while (i < 10) : (i += 1) {} |
| ... | ... | @@ -1384,7 +1386,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1384 | 1386 | \\ for (;;) { } |
| 1385 | 1387 | \\} |
| 1386 | 1388 | , &[_][]const u8{ |
| 1387 | | \\pub export fn foo() void { |
| 1389 | \\pub fn foo() void { |
| 1388 | 1390 | \\ while (true) {} |
| 1389 | 1391 | \\} |
| 1390 | 1392 | }); |
| ... | ... | @@ -1396,7 +1398,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1396 | 1398 | \\ } |
| 1397 | 1399 | \\} |
| 1398 | 1400 | , &[_][]const u8{ |
| 1399 | | \\pub export fn foo() void { |
| 1401 | \\pub fn foo() void { |
| 1400 | 1402 | \\ while (true) { |
| 1401 | 1403 | \\ break; |
| 1402 | 1404 | \\ } |
| ... | ... | @@ -1410,7 +1412,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1410 | 1412 | \\ } |
| 1411 | 1413 | \\} |
| 1412 | 1414 | , &[_][]const u8{ |
| 1413 | | \\pub export fn foo() void { |
| 1415 | \\pub fn foo() void { |
| 1414 | 1416 | \\ while (true) { |
| 1415 | 1417 | \\ continue; |
| 1416 | 1418 | \\ } |
| ... | ... | @@ -1465,7 +1467,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1465 | 1467 | \\ return x; |
| 1466 | 1468 | \\} |
| 1467 | 1469 | , &[_][]const u8{ |
| 1468 | | \\pub export fn foo() c_int { |
| 1470 | \\pub fn foo() c_int { |
| 1469 | 1471 | \\ var x: c_int = 1; |
| 1470 | 1472 | \\ { |
| 1471 | 1473 | \\ var x_0: c_int = 2; |
| ... | ... | @@ -1490,7 +1492,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1490 | 1492 | \\ return ~x; |
| 1491 | 1493 | \\} |
| 1492 | 1494 | , &[_][]const u8{ |
| 1493 | | \\pub export fn foo(x: c_int) c_int { |
| 1495 | \\pub fn foo(x: c_int) c_int { |
| 1494 | 1496 | \\ return ~x; |
| 1495 | 1497 | \\} |
| 1496 | 1498 | }); |
| ... | ... | @@ -1503,7 +1505,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1503 | 1505 | \\ return !c; |
| 1504 | 1506 | \\} |
| 1505 | 1507 | , &[_][]const u8{ |
| 1506 | | \\pub export fn foo(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1508 | \\pub fn foo(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1507 | 1509 | \\ return !(a == 0); |
| 1508 | 1510 | \\ return !(a != 0); |
| 1509 | 1511 | \\ return !(b != 0); |
| ... | ... | @@ -1516,7 +1518,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1516 | 1518 | \\ return u32; |
| 1517 | 1519 | \\} |
| 1518 | 1520 | , &[_][]const u8{ |
| 1519 | | \\pub export fn foo(u32_0: c_int) c_int { |
| 1521 | \\pub fn foo(u32_0: c_int) c_int { |
| 1520 | 1522 | \\ return u32_0; |
| 1521 | 1523 | \\} |
| 1522 | 1524 | }); |
| ... | ... | @@ -1545,7 +1547,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1545 | 1547 | \\ B, |
| 1546 | 1548 | \\ C, |
| 1547 | 1549 | \\}; |
| 1548 | | \\pub export fn if_none_bool(a: c_int, b: f32, c: ?*c_void, d: enum_SomeEnum) c_int { |
| 1550 | \\pub fn if_none_bool(a: c_int, b: f32, c: ?*c_void, d: enum_SomeEnum) c_int { |
| 1549 | 1551 | \\ if (a != 0) return 0; |
| 1550 | 1552 | \\ if (b != 0) return 1; |
| 1551 | 1553 | \\ if (c != null) return 2; |
| ... | ... | @@ -1562,7 +1564,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1562 | 1564 | \\ return 3; |
| 1563 | 1565 | \\} |
| 1564 | 1566 | , &[_][]const u8{ |
| 1565 | | \\pub export fn while_none_bool(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1567 | \\pub fn while_none_bool(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1566 | 1568 | \\ while (a != 0) return 0; |
| 1567 | 1569 | \\ while (b != 0) return 1; |
| 1568 | 1570 | \\ while (c != null) return 2; |
| ... | ... | @@ -1578,7 +1580,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1578 | 1580 | \\ return 3; |
| 1579 | 1581 | \\} |
| 1580 | 1582 | , &[_][]const u8{ |
| 1581 | | \\pub export fn for_none_bool(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1583 | \\pub fn for_none_bool(a: c_int, b: f32, c: ?*c_void) c_int { |
| 1582 | 1584 | \\ while (a != 0) return 0; |
| 1583 | 1585 | \\ while (b != 0) return 1; |
| 1584 | 1586 | \\ while (c != null) return 2; |
| ... | ... | @@ -1602,7 +1604,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1602 | 1604 | \\ } |
| 1603 | 1605 | \\} |
| 1604 | 1606 | , &[_][]const u8{ |
| 1605 | | \\pub export fn switch_fn(i: c_int) c_int { |
| 1607 | \\pub fn switch_fn(i: c_int) c_int { |
| 1606 | 1608 | \\ var res: c_int = 0; |
| 1607 | 1609 | \\ __switch: { |
| 1608 | 1610 | \\ __case_2: { |
| ... | ... | @@ -1628,7 +1630,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1628 | 1630 | \\} |
| 1629 | 1631 | }); |
| 1630 | 1632 | |
| 1631 | | cases.add( |
| 1633 | cases.addC( |
| 1632 | 1634 | "u integer suffix after 0 (zero) in macro definition", |
| 1633 | 1635 | "#define ZERO 0U", |
| 1634 | 1636 | &[_][]const u8{ |
| ... | ... | @@ -1636,7 +1638,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1636 | 1638 | }, |
| 1637 | 1639 | ); |
| 1638 | 1640 | |
| 1639 | | cases.add( |
| 1641 | cases.addC( |
| 1640 | 1642 | "l integer suffix after 0 (zero) in macro definition", |
| 1641 | 1643 | "#define ZERO 0L", |
| 1642 | 1644 | &[_][]const u8{ |
| ... | ... | @@ -1644,7 +1646,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1644 | 1646 | }, |
| 1645 | 1647 | ); |
| 1646 | 1648 | |
| 1647 | | cases.add( |
| 1649 | cases.addC( |
| 1648 | 1650 | "ul integer suffix after 0 (zero) in macro definition", |
| 1649 | 1651 | "#define ZERO 0UL", |
| 1650 | 1652 | &[_][]const u8{ |
| ... | ... | @@ -1652,7 +1654,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1652 | 1654 | }, |
| 1653 | 1655 | ); |
| 1654 | 1656 | |
| 1655 | | cases.add( |
| 1657 | cases.addC( |
| 1656 | 1658 | "lu integer suffix after 0 (zero) in macro definition", |
| 1657 | 1659 | "#define ZERO 0LU", |
| 1658 | 1660 | &[_][]const u8{ |
| ... | ... | @@ -1660,7 +1662,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1660 | 1662 | }, |
| 1661 | 1663 | ); |
| 1662 | 1664 | |
| 1663 | | cases.add( |
| 1665 | cases.addC( |
| 1664 | 1666 | "ll integer suffix after 0 (zero) in macro definition", |
| 1665 | 1667 | "#define ZERO 0LL", |
| 1666 | 1668 | &[_][]const u8{ |
| ... | ... | @@ -1668,7 +1670,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1668 | 1670 | }, |
| 1669 | 1671 | ); |
| 1670 | 1672 | |
| 1671 | | cases.add( |
| 1673 | cases.addC( |
| 1672 | 1674 | "ull integer suffix after 0 (zero) in macro definition", |
| 1673 | 1675 | "#define ZERO 0ULL", |
| 1674 | 1676 | &[_][]const u8{ |
| ... | ... | @@ -1676,7 +1678,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1676 | 1678 | }, |
| 1677 | 1679 | ); |
| 1678 | 1680 | |
| 1679 | | cases.add( |
| 1681 | cases.addC( |
| 1680 | 1682 | "llu integer suffix after 0 (zero) in macro definition", |
| 1681 | 1683 | "#define ZERO 0LLU", |
| 1682 | 1684 | &[_][]const u8{ |
| ... | ... | @@ -1684,7 +1686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1684 | 1686 | }, |
| 1685 | 1687 | ); |
| 1686 | 1688 | |
| 1687 | | cases.add( |
| 1689 | cases.addC( |
| 1688 | 1690 | "bitwise not on u-suffixed 0 (zero) in macro definition", |
| 1689 | 1691 | "#define NOT_ZERO (~0U)", |
| 1690 | 1692 | &[_][]const u8{ |
| ... | ... | @@ -1692,7 +1694,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1692 | 1694 | }, |
| 1693 | 1695 | ); |
| 1694 | 1696 | |
| 1695 | | cases.add("implicit casts", |
| 1697 | cases.addC("implicit casts", |
| 1696 | 1698 | \\#include <stdbool.h> |
| 1697 | 1699 | \\ |
| 1698 | 1700 | \\void fn_int(int x); |
| ... | ... | @@ -1747,7 +1749,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1747 | 1749 | \\} |
| 1748 | 1750 | }); |
| 1749 | 1751 | |
| 1750 | | cases.add("pointer conversion with different alignment", |
| 1752 | cases.addC("pointer conversion with different alignment", |
| 1751 | 1753 | \\void test_ptr_cast() { |
| 1752 | 1754 | \\ void *p; |
| 1753 | 1755 | \\ { |
| ... | ... | @@ -1781,7 +1783,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1781 | 1783 | \\} |
| 1782 | 1784 | }); |
| 1783 | 1785 | |
| 1784 | | cases.add("escape sequences", |
| 1786 | cases.addC("escape sequences", |
| 1785 | 1787 | \\const char *escapes() { |
| 1786 | 1788 | \\char a = '\'', |
| 1787 | 1789 | \\ b = '\\', |
| ... | ... | @@ -1825,7 +1827,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1825 | 1827 | } |
| 1826 | 1828 | |
| 1827 | 1829 | /////////////// Cases for only stage1 because stage2 behavior is better //////////////// |
| 1828 | | cases.add("Parameterless function prototypes", |
| 1830 | cases.addC("Parameterless function prototypes", |
| 1829 | 1831 | \\void foo() {} |
| 1830 | 1832 | \\void bar(void) {} |
| 1831 | 1833 | , &[_][]const u8{ |