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 {
322322
323323 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) {
326327 error.UnsupportedType => {
327328 return failDecl(c, var_decl_loc, var_name, "unable to resolve variable type", .{});
328329 },
......@@ -336,7 +337,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
336337 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});
337338 break :blk transApValue(rp, ap_value, qual_type, var_decl_loc) catch |err| switch (err) {
338339 error.UnsupportedTranslation,
339 error.UnsupportedType, => {
340 error.UnsupportedType,
341 => {
340342 return failDecl(c, var_decl_loc, var_name, "unable to evaluate initializer", .{});
341343 },
342344 error.OutOfMemory => |e| return e,
......@@ -345,9 +347,7 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
345347 try transCreateNodeUndefinedLiteral(c);
346348 var_node.eq_token = eq_tok;
347349 var_node.init_node = init_node;
348 }
349
350 if (!is_extern) {
350 } else if (!is_extern) {
351351 return failDecl(c, var_decl_loc, var_name, "non-extern, non-static variable not supported", .{});
352352 }
353353
test/tests.zig-34
......@@ -1604,16 +1604,6 @@ pub const TranslateCContext = struct {
16041604 self.addCase(tc);
16051605 }
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
16171607 pub fn add_both(
16181608 self: *TranslateCContext,
16191609 name: []const u8,
......@@ -1627,19 +1617,6 @@ pub const TranslateCContext = struct {
16271617 }
16281618 }
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
16431620 pub fn add_2(
16441621 self: *TranslateCContext,
16451622 name: []const u8,
......@@ -1651,17 +1628,6 @@ pub const TranslateCContext = struct {
16511628 self.addCase(tc);
16521629 }
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
16651631 pub fn addAllowWarnings(
16661632 self: *TranslateCContext,
16671633 name: []const u8,
test/translate_c.zig+109-114
......@@ -4,11 +4,8 @@ const builtin = @import("builtin");
44// add_both - test for stage1 and stage2, in #include mode
55// add - test stage1 only, in #include mode
66// 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 {
129 /////////////// Cases that pass for both stage1/stage2 ////////////////
1310 cases.add_both("simple function prototypes",
1411 \\void __attribute__((noreturn)) foo(void);
......@@ -26,7 +23,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
2623 \\ const unsigned d = 440;
2724 \\}
2825 , &[_][]const u8{
29 \\pub fn foo() void {
26 \\pub export fn foo() void {
3027 \\ var a: c_int = undefined;
3128 \\ var b: u8 = @as(u8, 123);
3229 \\ const c: c_int = undefined;
......@@ -44,7 +41,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
4441 \\ a = 1;
4542 \\}
4643 , &[_][]const u8{
47 \\pub fn foo() void {
44 \\pub export fn foo() void {
4845 \\ var a: c_int = undefined;
4946 \\ _ = 1;
5047 \\ _ = "hey";
......@@ -54,29 +51,42 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
5451 \\}
5552 });
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
5769 /////////////// Cases that pass for only stage2 ////////////////
58 // TODO: restore these tests after removing "import mode" concept
59 // https://github.com/ziglang/zig/issues/2780
60
61 // cases.add_2("Parameterless function prototypes",
62 // \\void a() {}
63 // \\void b(void) {}
64 // \\void c();
65 // \\void d(void);
66 // ,
67 // \\pub export fn a() void {}
68 // \\pub export fn b() void {}
69 // \\pub extern fn c(...) void;
70 // \\pub extern fn d() void;
71 // );
72
73 // cases.add_2("simple function definition",
74 // \\void foo(void) {}
75 // \\static void bar(void) {}
76 // ,
77 // \\pub export fn foo() void {}
78 // \\pub extern fn bar() void {}
79 // );
70
71 cases.add_2("Parameterless function prototypes",
72 \\void a() {}
73 \\void b(void) {}
74 \\void c();
75 \\void d(void);
76 , &[_][]const u8{
77 \\pub export fn a() void {}
78 \\pub export fn b() void {}
79 \\pub extern fn c(...) void;
80 \\pub extern fn d() void;
81 });
82
83 cases.add_2("simple function definition",
84 \\void foo(void) {}
85 \\static void bar(void) {}
86 , &[_][]const u8{
87 \\pub export fn foo() void {}
88 \\pub fn bar() void {}
89 });
8090
8191 cases.add_2("parameterless function prototypes",
8292 \\void a() {}
......@@ -84,8 +94,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
8494 \\void c();
8595 \\void d(void);
8696 , &[_][]const u8{
87 \\pub fn a(...) void {}
88 \\pub fn b() void {}
97 \\pub export fn a() void {}
98 \\pub export fn b() void {}
8999 \\pub extern fn c(...) void;
90100 \\pub extern fn d() void;
91101 });
......@@ -124,7 +134,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
124134 \\void foo(void) {}
125135 \\static void bar(void) {}
126136 , &[_][]const u8{
127 \\pub fn foo() void {}
137 \\pub export fn foo() void {}
128138 \\pub fn bar() void {}
129139 });
130140
......@@ -142,7 +152,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
142152 \\}
143153 , &[_][]const u8{
144154 \\pub extern fn foo() void;
145 \\pub fn bar() void {
155 \\pub export fn bar() void {
146156 \\ var func_ptr: ?*c_void = @ptrCast(?*c_void, foo);
147157 \\ var typed_func_ptr: ?extern fn () void = @intToPtr(?extern fn () void, @as(c_ulong, @ptrToInt(func_ptr)));
148158 \\}
......@@ -212,7 +222,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
212222 \\ __PRETTY_FUNCTION__;
213223 \\}
214224 , &[_][]const u8{
215 \\pub fn foo() void {
225 \\pub export fn foo() void {
216226 \\ _ = "foo";
217227 \\ _ = "foo";
218228 \\ _ = "void foo(void)";
......@@ -229,7 +239,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
229239 \\ a = 1;
230240 \\}
231241 , &[_][]const u8{
232 \\pub fn foo() void {
242 \\pub export fn foo() void {
233243 \\ var a: c_int = undefined;
234244 \\ _ = 1;
235245 \\ _ = "hey";
......@@ -244,7 +254,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
244254 \\ for (int x = 0; x < 10; x++);
245255 \\}
246256 , &[_][]const u8{
247 \\pub fn foo() void {
257 \\pub export fn foo() void {
248258 \\ {
249259 \\ var x: c_int = 0;
250260 \\ while (x < 10) : (x += 1) {}
......@@ -257,7 +267,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
257267 \\ do ; while (1);
258268 \\}
259269 , &[_][]const u8{ // TODO this should be if (1 != 0) break
260 \\pub fn foo() void {
270 \\pub export fn foo() void {
261271 \\ while (true) {
262272 \\ {}
263273 \\ if (!1) break;
......@@ -270,7 +280,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
270280 \\ for (;;);
271281 \\}
272282 , &[_][]const u8{
273 \\pub fn foo() void {
283 \\pub export fn foo() void {
274284 \\ while (true) {}
275285 \\}
276286 });
......@@ -280,7 +290,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
280290 \\ while (1);
281291 \\}
282292 , &[_][]const u8{
283 \\pub fn foo() void {
293 \\pub export fn foo() void {
284294 \\ while (1 != 0) {}
285295 \\}
286296 });
......@@ -326,7 +336,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
326336 \\pub extern fn foo() noreturn;
327337 });
328338
329 cases.addC("simple function",
339 cases.add("simple function",
330340 \\int abs(int a) {
331341 \\ return a < 0 ? -a : a;
332342 \\}
......@@ -482,15 +492,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
482492 \\pub const THING2 = THING1;
483493 });
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
494495 cases.add("circular struct definitions",
495496 \\struct Bar;
496497 \\
......@@ -642,7 +643,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
642643 \\pub const LUA_GLOBALSINDEX = -10002;
643644 });
644645
645 cases.addC("post increment",
646 cases.add("post increment",
646647 \\unsigned foo1(unsigned a) {
647648 \\ a++;
648649 \\ return a;
......@@ -664,7 +665,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
664665 \\}
665666 });
666667
667 cases.addC("shift right assign",
668 cases.add("shift right assign",
668669 \\int log2(unsigned a) {
669670 \\ int i = 0;
670671 \\ while (a > 0) {
......@@ -683,7 +684,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
683684 \\}
684685 });
685686
686 cases.addC("if statement",
687 cases.add("if statement",
687688 \\int max(int a, int b) {
688689 \\ if (a < b)
689690 \\ return b;
......@@ -703,7 +704,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
703704 \\}
704705 });
705706
706 cases.addC("==, !=",
707 cases.add("==, !=",
707708 \\int max(int a, int b) {
708709 \\ if (a == b)
709710 \\ return a;
......@@ -719,7 +720,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
719720 \\}
720721 });
721722
722 cases.addC_both("add, sub, mul, div, rem",
723 cases.add_both("add, sub, mul, div, rem",
723724 \\int s(int a, int b) {
724725 \\ int c;
725726 \\ c = a + b;
......@@ -755,7 +756,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
755756 \\}
756757 });
757758
758 cases.addC("bitwise binary operators",
759 cases.add("bitwise binary operators",
759760 \\int max(int a, int b) {
760761 \\ return (a & b) ^ (a | b);
761762 \\}
......@@ -765,7 +766,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
765766 \\}
766767 });
767768
768 cases.addC("logical and, logical or",
769 cases.add("logical and, logical or",
769770 \\int max(int a, int b) {
770771 \\ if (a < b || a == b)
771772 \\ return b;
......@@ -781,7 +782,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
781782 \\}
782783 });
783784
784 cases.addC("logical and, logical or on none bool values",
785 cases.add("logical and, logical or on none bool values",
785786 \\int and_or_none_bool(int a, float b, void *c) {
786787 \\ if (a && b) return 0;
787788 \\ if (b && c) return 1;
......@@ -803,7 +804,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
803804 \\}
804805 });
805806
806 cases.addC("assign",
807 cases.add("assign",
807808 \\int max(int a) {
808809 \\ int tmp;
809810 \\ tmp = a;
......@@ -818,7 +819,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
818819 \\}
819820 });
820821
821 cases.addC("chaining assign",
822 cases.add("chaining assign",
822823 \\void max(int a) {
823824 \\ int b, c;
824825 \\ c = b = a;
......@@ -835,7 +836,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
835836 \\}
836837 });
837838
838 cases.addC("shift right assign with a fixed size type",
839 cases.add("shift right assign with a fixed size type",
839840 \\#include <stdint.h>
840841 \\int log2(uint32_t a) {
841842 \\ int i = 0;
......@@ -865,7 +866,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
865866 \\pub const Two = 1;
866867 });
867868
868 cases.addC("function call",
869 cases.add("function call",
869870 \\static void bar(void) { }
870871 \\static int baz(void) { return 0; }
871872 \\void foo(void) {
......@@ -883,7 +884,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
883884 \\}
884885 });
885886
886 cases.addC("field access expression",
887 cases.add("field access expression",
887888 \\struct Foo {
888889 \\ int field;
889890 \\};
......@@ -899,7 +900,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
899900 \\}
900901 });
901902
902 cases.addC("null statements",
903 cases.add("null statements",
903904 \\void foo(void) {
904905 \\ ;;;;;
905906 \\}
......@@ -919,7 +920,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
919920 \\pub var array: [100]c_int = undefined;
920921 });
921922
922 cases.addC("array access",
923 cases.add("array access",
923924 \\int array[100];
924925 \\int foo(int index) {
925926 \\ return array[index];
......@@ -931,7 +932,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
931932 \\}
932933 });
933934
934 cases.addC("c style cast",
935 cases.add("c style cast",
935936 \\int float_to_int(float a) {
936937 \\ return (int)a;
937938 \\}
......@@ -941,7 +942,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
941942 \\}
942943 });
943944
944 cases.addC("void cast",
945 cases.add("void cast",
945946 \\void foo(int a) {
946947 \\ (void) a;
947948 \\}
......@@ -951,7 +952,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
951952 \\}
952953 });
953954
954 cases.addC("implicit cast to void *",
955 cases.add("implicit cast to void *",
955956 \\void *foo(unsigned short *x) {
956957 \\ return x;
957958 \\}
......@@ -961,7 +962,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
961962 \\}
962963 });
963964
964 cases.addC("sizeof",
965 cases.add("sizeof",
965966 \\#include <stddef.h>
966967 \\size_t size_of(void) {
967968 \\ return sizeof(int);
......@@ -972,7 +973,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
972973 \\}
973974 });
974975
975 cases.addC("null pointer implicit cast",
976 cases.add("null pointer implicit cast",
976977 \\int* foo(void) {
977978 \\ return 0;
978979 \\}
......@@ -982,7 +983,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
982983 \\}
983984 });
984985
985 cases.addC("comma operator",
986 cases.add("comma operator",
986987 \\int foo(void) {
987988 \\ return 1, 2;
988989 \\}
......@@ -995,7 +996,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
995996 \\}
996997 });
997998
998 cases.addC("statement expression",
999 cases.add("statement expression",
9991000 \\int foo(void) {
10001001 \\ return ({
10011002 \\ int a = 1;
......@@ -1011,7 +1012,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
10111012 \\}
10121013 });
10131014
1014 cases.addC("__extension__ cast",
1015 cases.add("__extension__ cast",
10151016 \\int foo(void) {
10161017 \\ return __extension__ 1;
10171018 \\}
......@@ -1021,7 +1022,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
10211022 \\}
10221023 });
10231024
1024 cases.addC("bitshift",
1025 cases.add("bitshift",
10251026 \\int foo(void) {
10261027 \\ return (1 << 2) >> 1;
10271028 \\}
......@@ -1031,7 +1032,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
10311032 \\}
10321033 });
10331034
1034 cases.addC("compound assignment operators",
1035 cases.add("compound assignment operators",
10351036 \\void foo(void) {
10361037 \\ int a = 0;
10371038 \\ a += (a += 1);
......@@ -1089,7 +1090,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
10891090 \\}
10901091 });
10911092
1092 cases.addC("compound assignment operators unsigned",
1093 cases.add("compound assignment operators unsigned",
10931094 \\void foo(void) {
10941095 \\ unsigned a = 0;
10951096 \\ a += (a += 1);
......@@ -1147,7 +1148,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
11471148 \\}
11481149 });
11491150
1150 cases.addC("duplicate typedef",
1151 cases.add("duplicate typedef",
11511152 \\typedef long foo;
11521153 \\typedef int bar;
11531154 \\typedef long foo;
......@@ -1158,7 +1159,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
11581159 \\pub const baz = c_int;
11591160 });
11601161
1161 cases.addC("post increment/decrement",
1162 cases.add("post increment/decrement",
11621163 \\void foo(void) {
11631164 \\ int i = 0;
11641165 \\ unsigned u = 0;
......@@ -1206,7 +1207,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
12061207 \\}
12071208 });
12081209
1209 cases.addC("pre increment/decrement",
1210 cases.add("pre increment/decrement",
12101211 \\void foo(void) {
12111212 \\ int i = 0;
12121213 \\ unsigned u = 0;
......@@ -1250,7 +1251,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
12501251 \\}
12511252 });
12521253
1253 cases.addC("do loop",
1254 cases.add("do loop",
12541255 \\void foo(void) {
12551256 \\ int a = 2;
12561257 \\ do {
......@@ -1277,7 +1278,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
12771278 \\}
12781279 });
12791280
1280 cases.addC("deref function pointer",
1281 cases.add("deref function pointer",
12811282 \\void foo(void) {}
12821283 \\int baz(void) { return 0; }
12831284 \\void bar(void) {
......@@ -1307,7 +1308,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13071308 \\}
13081309 });
13091310
1310 cases.addC("normal deref",
1311 cases.add("normal deref",
13111312 \\void foo(int *x) {
13121313 \\ *x = 1;
13131314 \\}
......@@ -1338,7 +1339,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13381339 \\ return *ptr;
13391340 \\}
13401341 , &[_][]const u8{
1341 \\pub fn foo() c_int {
1342 \\pub export fn foo() c_int {
13421343 \\ var x: c_int = 1234;
13431344 \\ var ptr: [*c]c_int = &x;
13441345 \\ return ptr.?.*;
......@@ -1350,7 +1351,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13501351 \\ return "bar";
13511352 \\}
13521353 , &[_][]const u8{
1353 \\pub fn foo() [*c]const u8 {
1354 \\pub export fn foo() [*c]const u8 {
13541355 \\ return "bar";
13551356 \\}
13561357 });
......@@ -1360,7 +1361,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13601361 \\ return;
13611362 \\}
13621363 , &[_][]const u8{
1363 \\pub fn foo() void {
1364 \\pub export fn foo() void {
13641365 \\ return;
13651366 \\}
13661367 });
......@@ -1370,7 +1371,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13701371 \\ for (int i = 0; i < 10; i += 1) { }
13711372 \\}
13721373 , &[_][]const u8{
1373 \\pub fn foo() void {
1374 \\pub export fn foo() void {
13741375 \\ {
13751376 \\ var i: c_int = 0;
13761377 \\ while (i < 10) : (i += 1) {}
......@@ -1383,7 +1384,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13831384 \\ for (;;) { }
13841385 \\}
13851386 , &[_][]const u8{
1386 \\pub fn foo() void {
1387 \\pub export fn foo() void {
13871388 \\ while (true) {}
13881389 \\}
13891390 });
......@@ -1395,7 +1396,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
13951396 \\ }
13961397 \\}
13971398 , &[_][]const u8{
1398 \\pub fn foo() void {
1399 \\pub export fn foo() void {
13991400 \\ while (true) {
14001401 \\ break;
14011402 \\ }
......@@ -1409,7 +1410,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
14091410 \\ }
14101411 \\}
14111412 , &[_][]const u8{
1412 \\pub fn foo() void {
1413 \\pub export fn foo() void {
14131414 \\ while (true) {
14141415 \\ continue;
14151416 \\ }
......@@ -1464,7 +1465,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
14641465 \\ return x;
14651466 \\}
14661467 , &[_][]const u8{
1467 \\pub fn foo() c_int {
1468 \\pub export fn foo() c_int {
14681469 \\ var x: c_int = 1;
14691470 \\ {
14701471 \\ var x_0: c_int = 2;
......@@ -1489,7 +1490,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
14891490 \\ return ~x;
14901491 \\}
14911492 , &[_][]const u8{
1492 \\pub fn foo(x: c_int) c_int {
1493 \\pub export fn foo(x: c_int) c_int {
14931494 \\ return ~x;
14941495 \\}
14951496 });
......@@ -1502,7 +1503,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15021503 \\ return !c;
15031504 \\}
15041505 , &[_][]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 {
15061507 \\ return !(a == 0);
15071508 \\ return !(a != 0);
15081509 \\ return !(b != 0);
......@@ -1515,23 +1516,17 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15151516 \\ return u32;
15161517 \\}
15171518 , &[_][]const u8{
1518 \\pub fn foo(u32_0: c_int) c_int {
1519 \\pub export fn foo(u32_0: c_int) c_int {
15191520 \\ return u32_0;
15201521 \\}
15211522 });
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
15291524 cases.add("static incomplete array inside function",
15301525 \\void foo(void) {
15311526 \\ static const char v2[] = "2.2.2";
15321527 \\}
15331528 , &[_][]const u8{
1534 \\pub fn foo() void {
1529 \\pub export fn foo() void {
15351530 \\ const v2: [*c]const u8 = "2.2.2";
15361531 \\}
15371532 });
......@@ -1560,7 +1555,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15601555 \\ B,
15611556 \\ C,
15621557 \\};
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 {
15641559 \\ if (a != 0) return 0;
15651560 \\ if (b != 0) return 1;
15661561 \\ if (c != null) return 2;
......@@ -1577,7 +1572,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15771572 \\ return 3;
15781573 \\}
15791574 , &[_][]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 {
15811576 \\ while (a != 0) return 0;
15821577 \\ while (b != 0) return 1;
15831578 \\ while (c != null) return 2;
......@@ -1593,7 +1588,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
15931588 \\ return 3;
15941589 \\}
15951590 , &[_][]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 {
15971592 \\ while (a != 0) return 0;
15981593 \\ while (b != 0) return 1;
15991594 \\ while (c != null) return 2;
......@@ -1617,7 +1612,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16171612 \\ }
16181613 \\}
16191614 , &[_][]const u8{
1620 \\pub fn switch_fn(i: c_int) c_int {
1615 \\pub export fn switch_fn(i: c_int) c_int {
16211616 \\ var res: c_int = 0;
16221617 \\ __switch: {
16231618 \\ __case_2: {
......@@ -1643,7 +1638,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16431638 \\}
16441639 });
16451640
1646 cases.addC(
1641 cases.add(
16471642 "u integer suffix after 0 (zero) in macro definition",
16481643 "#define ZERO 0U",
16491644 &[_][]const u8{
......@@ -1651,7 +1646,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16511646 },
16521647 );
16531648
1654 cases.addC(
1649 cases.add(
16551650 "l integer suffix after 0 (zero) in macro definition",
16561651 "#define ZERO 0L",
16571652 &[_][]const u8{
......@@ -1659,7 +1654,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16591654 },
16601655 );
16611656
1662 cases.addC(
1657 cases.add(
16631658 "ul integer suffix after 0 (zero) in macro definition",
16641659 "#define ZERO 0UL",
16651660 &[_][]const u8{
......@@ -1667,7 +1662,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16671662 },
16681663 );
16691664
1670 cases.addC(
1665 cases.add(
16711666 "lu integer suffix after 0 (zero) in macro definition",
16721667 "#define ZERO 0LU",
16731668 &[_][]const u8{
......@@ -1675,7 +1670,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16751670 },
16761671 );
16771672
1678 cases.addC(
1673 cases.add(
16791674 "ll integer suffix after 0 (zero) in macro definition",
16801675 "#define ZERO 0LL",
16811676 &[_][]const u8{
......@@ -1683,7 +1678,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16831678 },
16841679 );
16851680
1686 cases.addC(
1681 cases.add(
16871682 "ull integer suffix after 0 (zero) in macro definition",
16881683 "#define ZERO 0ULL",
16891684 &[_][]const u8{
......@@ -1691,7 +1686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16911686 },
16921687 );
16931688
1694 cases.addC(
1689 cases.add(
16951690 "llu integer suffix after 0 (zero) in macro definition",
16961691 "#define ZERO 0LLU",
16971692 &[_][]const u8{
......@@ -1699,7 +1694,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
16991694 },
17001695 );
17011696
1702 cases.addC(
1697 cases.add(
17031698 "bitwise not on u-suffixed 0 (zero) in macro definition",
17041699 "#define NOT_ZERO (~0U)",
17051700 &[_][]const u8{
......@@ -1707,7 +1702,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
17071702 },
17081703 );
17091704
1710 cases.addC("implicit casts",
1705 cases.add("implicit casts",
17111706 \\#include <stdbool.h>
17121707 \\
17131708 \\void fn_int(int x);
......@@ -1762,7 +1757,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
17621757 \\}
17631758 });
17641759
1765 cases.addC("pointer conversion with different alignment",
1760 cases.add("pointer conversion with different alignment",
17661761 \\void test_ptr_cast() {
17671762 \\ void *p;
17681763 \\ {
......@@ -1796,7 +1791,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
17961791 \\}
17971792 });
17981793
1799 cases.addC("escape sequences",
1794 cases.add("escape sequences",
18001795 \\const char *escapes() {
18011796 \\char a = '\'',
18021797 \\ b = '\\',
......@@ -1840,7 +1835,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
18401835 }
18411836
18421837 /////////////// Cases for only stage1 because stage2 behavior is better ////////////////
1843 cases.addC("Parameterless function prototypes",
1838 cases.add("Parameterless function prototypes",
18441839 \\void foo() {}
18451840 \\void bar(void) {}
18461841 , &[_][]const u8{