| ... | ... | @@ -166,50 +166,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 166 | 166 | \\} |
| 167 | 167 | }); |
| 168 | 168 | |
| 169 | | cases.add_both("enums", |
| 170 | | \\enum Foo { |
| 171 | | \\ FooA, |
| 172 | | \\ FooB, |
| 173 | | \\ Foo1, |
| 174 | | \\}; |
| 175 | | , &[_][]const u8{ |
| 176 | | \\pub const enum_Foo = extern enum { |
| 177 | | \\ A, |
| 178 | | \\ B, |
| 179 | | \\ @"1", |
| 180 | | \\}; |
| 181 | | , |
| 182 | | \\pub const FooA = enum_Foo.A; |
| 183 | | , |
| 184 | | \\pub const FooB = enum_Foo.B; |
| 185 | | , |
| 186 | | \\pub const Foo1 = enum_Foo.@"1"; |
| 187 | | , |
| 188 | | \\pub const Foo = enum_Foo; |
| 189 | | }); |
| 190 | | |
| 191 | | cases.add_both("enums", |
| 192 | | \\enum Foo { |
| 193 | | \\ FooA = 2, |
| 194 | | \\ FooB = 5, |
| 195 | | \\ Foo1, |
| 196 | | \\}; |
| 197 | | , &[_][]const u8{ |
| 198 | | \\pub const enum_Foo = extern enum { |
| 199 | | \\ A = 2, |
| 200 | | \\ B = 5, |
| 201 | | \\ @"1" = 6, |
| 202 | | \\}; |
| 203 | | , |
| 204 | | \\pub const FooA = enum_Foo.A; |
| 205 | | , |
| 206 | | \\pub const FooB = enum_Foo.B; |
| 207 | | , |
| 208 | | \\pub const Foo1 = enum_Foo.@"1"; |
| 209 | | , |
| 210 | | \\pub const Foo = enum_Foo; |
| 211 | | }); |
| 212 | | |
| 213 | 169 | cases.add_both("typedef of function in struct field", |
| 214 | 170 | \\typedef void lws_callback_function(void); |
| 215 | 171 | \\struct Foo { |
| ... | ... | @@ -921,27 +877,27 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 921 | 877 | \\ p, |
| 922 | 878 | \\}; |
| 923 | 879 | , &[_][]const u8{ |
| 924 | | \\pub const a = enum_unnamed_1.a; |
| 925 | | \\pub const b = enum_unnamed_1.b; |
| 926 | | \\pub const c = enum_unnamed_1.c; |
| 880 | \\pub const a = 0; |
| 881 | \\pub const b = 1; |
| 882 | \\pub const c = 2; |
| 927 | 883 | \\const enum_unnamed_1 = extern enum { |
| 928 | 884 | \\ a, |
| 929 | 885 | \\ b, |
| 930 | 886 | \\ c, |
| 931 | 887 | \\}; |
| 932 | 888 | \\pub const d = enum_unnamed_1; |
| 933 | | \\pub const e = enum_unnamed_2.e; |
| 934 | | \\pub const f = enum_unnamed_2.f; |
| 935 | | \\pub const g = enum_unnamed_2.g; |
| 889 | \\pub const e = 0; |
| 890 | \\pub const f = 4; |
| 891 | \\pub const g = 5; |
| 936 | 892 | \\const enum_unnamed_2 = extern enum { |
| 937 | 893 | \\ e = 0, |
| 938 | 894 | \\ f = 4, |
| 939 | 895 | \\ g = 5, |
| 940 | 896 | \\}; |
| 941 | | \\pub export var h: enum_unnamed_2 = @as(enum_unnamed_2, e); |
| 942 | | \\pub const i = enum_unnamed_3.i; |
| 943 | | \\pub const j = enum_unnamed_3.j; |
| 944 | | \\pub const k = enum_unnamed_3.k; |
| 897 | \\pub export var h: enum_unnamed_2 = @intToEnum(enum_unnamed_2, e); |
| 898 | \\pub const i = 0; |
| 899 | \\pub const j = 1; |
| 900 | \\pub const k = 2; |
| 945 | 901 | \\const enum_unnamed_3 = extern enum { |
| 946 | 902 | \\ i, |
| 947 | 903 | \\ j, |
| ... | ... | @@ -951,9 +907,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 951 | 907 | \\ l: enum_unnamed_3, |
| 952 | 908 | \\ m: d, |
| 953 | 909 | \\}; |
| 954 | | \\pub const n = enum_i.n; |
| 955 | | \\pub const o = enum_i.o; |
| 956 | | \\pub const p = enum_i.p; |
| 910 | \\pub const n = 0; |
| 911 | \\pub const o = 1; |
| 912 | \\pub const p = 2; |
| 957 | 913 | \\pub const enum_i = extern enum { |
| 958 | 914 | \\ n, |
| 959 | 915 | \\ o, |
| ... | ... | @@ -1393,8 +1349,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1393 | 1349 | \\ Two, |
| 1394 | 1350 | \\}; |
| 1395 | 1351 | , &[_][]const u8{ |
| 1396 | | \\pub const One = enum_unnamed_1.One; |
| 1397 | | \\pub const Two = enum_unnamed_1.Two; |
| 1352 | \\pub const One = 0; |
| 1353 | \\pub const Two = 1; |
| 1398 | 1354 | \\const enum_unnamed_1 = extern enum { |
| 1399 | 1355 | \\ One, |
| 1400 | 1356 | \\ Two, |
| ... | ... | @@ -1496,9 +1452,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1496 | 1452 | \\ return ((((((((((e + f) + g) + h) + i) + j) + k) + l) + m) + o) + p); |
| 1497 | 1453 | \\} |
| 1498 | 1454 | , &[_][]const u8{ |
| 1499 | | \\pub const FooA = enum_Foo.A; |
| 1500 | | \\pub const FooB = enum_Foo.B; |
| 1501 | | \\pub const FooC = enum_Foo.C; |
| 1502 | 1455 | \\pub const enum_Foo = extern enum { |
| 1503 | 1456 | \\ A, |
| 1504 | 1457 | \\ B, |
| ... | ... | @@ -1509,7 +1462,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1509 | 1462 | \\ var a = _arg_a; |
| 1510 | 1463 | \\ var b = _arg_b; |
| 1511 | 1464 | \\ var c = _arg_c; |
| 1512 | | \\ var d: enum_Foo = @as(enum_Foo, FooA); |
| 1465 | \\ var d: enum_Foo = @intToEnum(enum_Foo, FooA); |
| 1513 | 1466 | \\ var e: c_int = @boolToInt(((a != 0) and (b != 0))); |
| 1514 | 1467 | \\ var f: c_int = @boolToInt(((b != 0) and (c != null))); |
| 1515 | 1468 | \\ var g: c_int = @boolToInt(((a != 0) and (c != null))); |
| ... | ... | @@ -1543,8 +1496,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1543 | 1496 | \\ x: c_int, |
| 1544 | 1497 | \\ y: c_int, |
| 1545 | 1498 | \\}; |
| 1546 | | \\pub const BarA = enum_Bar.A; |
| 1547 | | \\pub const BarB = enum_Bar.B; |
| 1499 | , |
| 1548 | 1500 | \\pub const enum_Bar = extern enum { |
| 1549 | 1501 | \\ A, |
| 1550 | 1502 | \\ B, |
| ... | ... | @@ -1746,9 +1698,6 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1746 | 1698 | \\ return 4; |
| 1747 | 1699 | \\} |
| 1748 | 1700 | , &[_][]const u8{ |
| 1749 | | \\pub const A = enum_SomeEnum.A; |
| 1750 | | \\pub const B = enum_SomeEnum.B; |
| 1751 | | \\pub const C = enum_SomeEnum.C; |
| 1752 | 1701 | \\pub const enum_SomeEnum = extern enum { |
| 1753 | 1702 | \\ A, |
| 1754 | 1703 | \\ B, |
| ... | ... | @@ -1863,26 +1812,26 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 1863 | 1812 | \\ i -= 1; |
| 1864 | 1813 | \\ u +%= 1; |
| 1865 | 1814 | \\ u -%= 1; |
| 1866 | | \\ i = blk: { |
| 1815 | \\ i = (blk: { |
| 1867 | 1816 | \\ const _ref_1 = &i; |
| 1868 | 1817 | \\ _ref_1.* += 1; |
| 1869 | 1818 | \\ break :blk _ref_1.*; |
| 1870 | | \\ }; |
| 1871 | | \\ i = blk: { |
| 1819 | \\ }); |
| 1820 | \\ i = (blk: { |
| 1872 | 1821 | \\ const _ref_2 = &i; |
| 1873 | 1822 | \\ _ref_2.* -= 1; |
| 1874 | 1823 | \\ break :blk _ref_2.*; |
| 1875 | | \\ }; |
| 1876 | | \\ u = blk: { |
| 1824 | \\ }); |
| 1825 | \\ u = (blk: { |
| 1877 | 1826 | \\ const _ref_3 = &u; |
| 1878 | 1827 | \\ _ref_3.* +%= 1; |
| 1879 | 1828 | \\ break :blk _ref_3.*; |
| 1880 | | \\ }; |
| 1881 | | \\ u = blk: { |
| 1829 | \\ }); |
| 1830 | \\ u = (blk: { |
| 1882 | 1831 | \\ const _ref_4 = &u; |
| 1883 | 1832 | \\ _ref_4.* -%= 1; |
| 1884 | 1833 | \\ break :blk _ref_4.*; |
| 1885 | | \\ }; |
| 1834 | \\ }); |
| 1886 | 1835 | \\} |
| 1887 | 1836 | }); |
| 1888 | 1837 | |
| ... | ... | @@ -2062,30 +2011,30 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2062 | 2011 | \\ i -= 1; |
| 2063 | 2012 | \\ u +%= 1; |
| 2064 | 2013 | \\ u -%= 1; |
| 2065 | | \\ i = blk: { |
| 2014 | \\ i = (blk: { |
| 2066 | 2015 | \\ const _ref_1 = &i; |
| 2067 | 2016 | \\ const _tmp_2 = _ref_1.*; |
| 2068 | 2017 | \\ _ref_1.* += 1; |
| 2069 | 2018 | \\ break :blk _tmp_2; |
| 2070 | | \\ }; |
| 2071 | | \\ i = blk: { |
| 2019 | \\ }); |
| 2020 | \\ i = (blk: { |
| 2072 | 2021 | \\ const _ref_3 = &i; |
| 2073 | 2022 | \\ const _tmp_4 = _ref_3.*; |
| 2074 | 2023 | \\ _ref_3.* -= 1; |
| 2075 | 2024 | \\ break :blk _tmp_4; |
| 2076 | | \\ }; |
| 2077 | | \\ u = blk: { |
| 2025 | \\ }); |
| 2026 | \\ u = (blk: { |
| 2078 | 2027 | \\ const _ref_5 = &u; |
| 2079 | 2028 | \\ const _tmp_6 = _ref_5.*; |
| 2080 | 2029 | \\ _ref_5.* +%= 1; |
| 2081 | 2030 | \\ break :blk _tmp_6; |
| 2082 | | \\ }; |
| 2083 | | \\ u = blk: { |
| 2031 | \\ }); |
| 2032 | \\ u = (blk: { |
| 2084 | 2033 | \\ const _ref_7 = &u; |
| 2085 | 2034 | \\ const _tmp_8 = _ref_7.*; |
| 2086 | 2035 | \\ _ref_7.* -%= 1; |
| 2087 | 2036 | \\ break :blk _tmp_8; |
| 2088 | | \\ }; |
| 2037 | \\ }); |
| 2089 | 2038 | \\} |
| 2090 | 2039 | }); |
| 2091 | 2040 | |
| ... | ... | @@ -2172,6 +2121,58 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 2172 | 2121 | \\pub const FOO_CHAR = '\x3f'; |
| 2173 | 2122 | }); |
| 2174 | 2123 | |
| 2124 | cases.add_2("enums", |
| 2125 | \\enum Foo { |
| 2126 | \\ FooA, |
| 2127 | \\ FooB, |
| 2128 | \\ Foo1, |
| 2129 | \\}; |
| 2130 | , &[_][]const u8{ |
| 2131 | \\pub const enum_Foo = extern enum { |
| 2132 | \\ A, |
| 2133 | \\ B, |
| 2134 | \\ @"1", |
| 2135 | \\}; |
| 2136 | , |
| 2137 | \\pub const FooA = 0; |
| 2138 | , |
| 2139 | \\pub const FooB = 1; |
| 2140 | , |
| 2141 | \\pub const Foo1 = 2; |
| 2142 | , |
| 2143 | \\pub const Foo = enum_Foo; |
| 2144 | }); |
| 2145 | |
| 2146 | cases.add_2("enums", |
| 2147 | \\enum Foo { |
| 2148 | \\ FooA = 2, |
| 2149 | \\ FooB = 5, |
| 2150 | \\ Foo1, |
| 2151 | \\}; |
| 2152 | , &[_][]const u8{ |
| 2153 | \\pub const enum_Foo = extern enum { |
| 2154 | \\ A = 2, |
| 2155 | \\ B = 5, |
| 2156 | \\ @"1" = 6, |
| 2157 | \\}; |
| 2158 | , |
| 2159 | \\pub const FooA = 2; |
| 2160 | , |
| 2161 | \\pub const FooB = 5; |
| 2162 | , |
| 2163 | \\pub const Foo1 = 6; |
| 2164 | , |
| 2165 | \\pub const Foo = enum_Foo; |
| 2166 | }); |
| 2167 | |
| 2168 | cases.add_2("macro cast", |
| 2169 | \\#define FOO(bar) baz((void *)(baz)) |
| 2170 | , &[_][]const u8{ |
| 2171 | \\pub inline fn FOO(bar: var) @TypeOf(baz(if (@typeId(@TypeOf(baz)) == .Pointer) @ptrCast([*c]void, baz) else if (@typeId(@TypeOf(baz)) == .Int) @intToPtr([*c]void, baz) else @as([*c]void, baz))) { |
| 2172 | \\ return baz(if (@typeId(@TypeOf(baz)) == .Pointer) @ptrCast([*c]void, baz) else if (@typeId(@TypeOf(baz)) == .Int) @intToPtr([*c]void, baz) else @as([*c]void, baz)); |
| 2173 | \\} |
| 2174 | }); |
| 2175 | |
| 2175 | 2176 | /////////////// Cases for only stage1 because stage2 behavior is better //////////////// |
| 2176 | 2177 | cases.addC("Parameterless function prototypes", |
| 2177 | 2178 | \\void foo() {} |
| ... | ... | @@ -3124,4 +3125,48 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 3124 | 3125 | , |
| 3125 | 3126 | \\pub const FOO_CHAR = 63; |
| 3126 | 3127 | }); |
| 3128 | |
| 3129 | cases.add("enums", |
| 3130 | \\enum Foo { |
| 3131 | \\ FooA, |
| 3132 | \\ FooB, |
| 3133 | \\ Foo1, |
| 3134 | \\}; |
| 3135 | , &[_][]const u8{ |
| 3136 | \\pub const enum_Foo = extern enum { |
| 3137 | \\ A, |
| 3138 | \\ B, |
| 3139 | \\ @"1", |
| 3140 | \\}; |
| 3141 | , |
| 3142 | \\pub const FooA = enum_Foo.A; |
| 3143 | , |
| 3144 | \\pub const FooB = enum_Foo.B; |
| 3145 | , |
| 3146 | \\pub const Foo1 = enum_Foo.@"1"; |
| 3147 | , |
| 3148 | \\pub const Foo = enum_Foo; |
| 3149 | }); |
| 3150 | |
| 3151 | cases.add("enums", |
| 3152 | \\enum Foo { |
| 3153 | \\ FooA = 2, |
| 3154 | \\ FooB = 5, |
| 3155 | \\ Foo1, |
| 3156 | \\}; |
| 3157 | , &[_][]const u8{ |
| 3158 | \\pub const enum_Foo = extern enum { |
| 3159 | \\ A = 2, |
| 3160 | \\ B = 5, |
| 3161 | \\ @"1" = 6, |
| 3162 | \\}; |
| 3163 | , |
| 3164 | \\pub const FooA = enum_Foo.A; |
| 3165 | , |
| 3166 | \\pub const FooB = enum_Foo.B; |
| 3167 | , |
| 3168 | \\pub const Foo1 = enum_Foo.@"1"; |
| 3169 | , |
| 3170 | \\pub const Foo = enum_Foo; |
| 3171 | }); |
| 3127 | 3172 | } |