| ... | ... | @@ -3,12 +3,33 @@ const std = @import("std"); |
| 3 | 3 | const CrossTarget = std.zig.CrossTarget; |
| 4 | 4 | |
| 5 | 5 | pub fn addCases(cases: *tests.TranslateCContext) void { |
| 6 | cases.add("missing return stmt", |
| 7 | \\int foo() {} |
| 8 | \\int bar() { |
| 9 | \\ int a = 2; |
| 10 | \\} |
| 11 | \\int baz() { |
| 12 | \\ return 0; |
| 13 | \\} |
| 14 | , &[_][]const u8{ |
| 15 | \\pub export fn foo() c_int { |
| 16 | \\ return 0; |
| 17 | \\} |
| 18 | \\pub export fn bar() c_int { |
| 19 | \\ var a: c_int = 2; |
| 20 | \\ return 0; |
| 21 | \\} |
| 22 | \\pub export fn baz() c_int { |
| 23 | \\ return 0; |
| 24 | \\} |
| 25 | }); |
| 26 | |
| 6 | 27 | cases.add("alignof", |
| 7 | | \\int main() { |
| 28 | \\void main() { |
| 8 | 29 | \\ int a = _Alignof(int); |
| 9 | 30 | \\} |
| 10 | 31 | , &[_][]const u8{ |
| 11 | | \\pub export fn main() c_int { |
| 32 | \\pub export fn main() void { |
| 12 | 33 | \\ var a: c_int = @bitCast(c_int, @truncate(c_uint, @alignOf(c_int))); |
| 13 | 34 | \\} |
| 14 | 35 | }); |
| ... | ... | @@ -539,6 +560,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 539 | 560 | \\ c = (a * b); |
| 540 | 561 | \\ c = @divTrunc(a, b); |
| 541 | 562 | \\ c = @rem(a, b); |
| 563 | \\ return 0; |
| 542 | 564 | \\} |
| 543 | 565 | \\pub export fn u() c_uint { |
| 544 | 566 | \\ var a: c_uint = undefined; |
| ... | ... | @@ -549,6 +571,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 549 | 571 | \\ c = (a *% b); |
| 550 | 572 | \\ c = (a / b); |
| 551 | 573 | \\ c = (a % b); |
| 574 | \\ return 0; |
| 552 | 575 | \\} |
| 553 | 576 | }); |
| 554 | 577 | |
| ... | ... | @@ -1596,13 +1619,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1596 | 1619 | }); |
| 1597 | 1620 | |
| 1598 | 1621 | cases.add("worst-case assign", |
| 1599 | | \\int foo() { |
| 1622 | \\void foo() { |
| 1600 | 1623 | \\ int a; |
| 1601 | 1624 | \\ int b; |
| 1602 | 1625 | \\ a = b = 2; |
| 1603 | 1626 | \\} |
| 1604 | 1627 | , &[_][]const u8{ |
| 1605 | | \\pub export fn foo() c_int { |
| 1628 | \\pub export fn foo() void { |
| 1606 | 1629 | \\ var a: c_int = undefined; |
| 1607 | 1630 | \\ var b: c_int = undefined; |
| 1608 | 1631 | \\ a = blk: { |
| ... | ... | @@ -1650,11 +1673,12 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1650 | 1673 | \\ a = 7; |
| 1651 | 1674 | \\ if (!true) break; |
| 1652 | 1675 | \\ } |
| 1676 | \\ return 0; |
| 1653 | 1677 | \\} |
| 1654 | 1678 | }); |
| 1655 | 1679 | |
| 1656 | 1680 | cases.add("for loops", |
| 1657 | | \\int foo() { |
| 1681 | \\void foo() { |
| 1658 | 1682 | \\ for (int i = 2, b = 4; i + 2; i = 2) { |
| 1659 | 1683 | \\ int a = 2; |
| 1660 | 1684 | \\ a = 6, 5, 7; |
| ... | ... | @@ -1662,7 +1686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1662 | 1686 | \\ char i = 2; |
| 1663 | 1687 | \\} |
| 1664 | 1688 | , &[_][]const u8{ |
| 1665 | | \\pub export fn foo() c_int { |
| 1689 | \\pub export fn foo() void { |
| 1666 | 1690 | \\ { |
| 1667 | 1691 | \\ var i: c_int = 2; |
| 1668 | 1692 | \\ var b: c_int = 4; |
| ... | ... | @@ -1712,7 +1736,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1712 | 1736 | }); |
| 1713 | 1737 | |
| 1714 | 1738 | cases.add("switch on int", |
| 1715 | | \\int switch_fn(int i) { |
| 1739 | \\void switch_fn(int i) { |
| 1716 | 1740 | \\ int res = 0; |
| 1717 | 1741 | \\ switch (i) { |
| 1718 | 1742 | \\ case 0: |
| ... | ... | @@ -1727,7 +1751,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1727 | 1751 | \\ } |
| 1728 | 1752 | \\} |
| 1729 | 1753 | , &[_][]const u8{ |
| 1730 | | \\pub export fn switch_fn(arg_i: c_int) c_int { |
| 1754 | \\pub export fn switch_fn(arg_i: c_int) void { |
| 1731 | 1755 | \\ var i = arg_i; |
| 1732 | 1756 | \\ var res: c_int = 0; |
| 1733 | 1757 | \\ @"switch": { |
| ... | ... | @@ -1787,13 +1811,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1787 | 1811 | }); |
| 1788 | 1812 | |
| 1789 | 1813 | cases.add("assign", |
| 1790 | | \\int max(int a) { |
| 1814 | \\void max(int a) { |
| 1791 | 1815 | \\ int tmp; |
| 1792 | 1816 | \\ tmp = a; |
| 1793 | 1817 | \\ a = tmp; |
| 1794 | 1818 | \\} |
| 1795 | 1819 | , &[_][]const u8{ |
| 1796 | | \\pub export fn max(arg_a: c_int) c_int { |
| 1820 | \\pub export fn max(arg_a: c_int) void { |
| 1797 | 1821 | \\ var a = arg_a; |
| 1798 | 1822 | \\ var tmp: c_int = undefined; |
| 1799 | 1823 | \\ tmp = a; |
| ... | ... | @@ -2082,7 +2106,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2082 | 2106 | \\ int b; |
| 2083 | 2107 | \\}a; |
| 2084 | 2108 | \\float b = 2.0f; |
| 2085 | | \\int foo(void) { |
| 2109 | \\void foo(void) { |
| 2086 | 2110 | \\ struct Foo *c; |
| 2087 | 2111 | \\ a.b; |
| 2088 | 2112 | \\ c->b; |
| ... | ... | @@ -2093,7 +2117,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2093 | 2117 | \\}; |
| 2094 | 2118 | \\pub extern var a: struct_Foo; |
| 2095 | 2119 | \\pub export var b: f32 = 2; |
| 2096 | | \\pub export fn foo() c_int { |
| 2120 | \\pub export fn foo() void { |
| 2097 | 2121 | \\ var c: [*c]struct_Foo = undefined; |
| 2098 | 2122 | \\ _ = a.b; |
| 2099 | 2123 | \\ _ = c.*.b; |
| ... | ... | @@ -2204,11 +2228,12 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2204 | 2228 | \\ if (a < b) return b; |
| 2205 | 2229 | \\ if (a < b) return b else return a; |
| 2206 | 2230 | \\ if (a < b) {} else {} |
| 2231 | \\ return 0; |
| 2207 | 2232 | \\} |
| 2208 | 2233 | }); |
| 2209 | 2234 | |
| 2210 | 2235 | cases.add("if statements", |
| 2211 | | \\int foo() { |
| 2236 | \\void foo() { |
| 2212 | 2237 | \\ if (2) { |
| 2213 | 2238 | \\ int a = 2; |
| 2214 | 2239 | \\ } |
| ... | ... | @@ -2217,7 +2242,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2217 | 2242 | \\ } |
| 2218 | 2243 | \\} |
| 2219 | 2244 | , &[_][]const u8{ |
| 2220 | | \\pub export fn foo() c_int { |
| 2245 | \\pub export fn foo() void { |
| 2221 | 2246 | \\ if (true) { |
| 2222 | 2247 | \\ var a: c_int = 2; |
| 2223 | 2248 | \\ } |
| ... | ... | @@ -2811,12 +2836,12 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2811 | 2836 | }); |
| 2812 | 2837 | |
| 2813 | 2838 | cases.add("arg name aliasing decl which comes after", |
| 2814 | | \\int foo(int bar) { |
| 2839 | \\void foo(int bar) { |
| 2815 | 2840 | \\ bar = 2; |
| 2816 | 2841 | \\} |
| 2817 | 2842 | \\int bar = 4; |
| 2818 | 2843 | , &[_][]const u8{ |
| 2819 | | \\pub export fn foo(arg_bar_1: c_int) c_int { |
| 2844 | \\pub export fn foo(arg_bar_1: c_int) void { |
| 2820 | 2845 | \\ var bar_1 = arg_bar_1; |
| 2821 | 2846 | \\ bar_1 = 2; |
| 2822 | 2847 | \\} |
| ... | ... | @@ -2824,12 +2849,12 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2824 | 2849 | }); |
| 2825 | 2850 | |
| 2826 | 2851 | cases.add("arg name aliasing macro which comes after", |
| 2827 | | \\int foo(int bar) { |
| 2852 | \\void foo(int bar) { |
| 2828 | 2853 | \\ bar = 2; |
| 2829 | 2854 | \\} |
| 2830 | 2855 | \\#define bar 4 |
| 2831 | 2856 | , &[_][]const u8{ |
| 2832 | | \\pub export fn foo(arg_bar_1: c_int) c_int { |
| 2857 | \\pub export fn foo(arg_bar_1: c_int) void { |
| 2833 | 2858 | \\ var bar_1 = arg_bar_1; |
| 2834 | 2859 | \\ bar_1 = 2; |
| 2835 | 2860 | \\} |