| ... | ... | @@ -49,7 +49,7 @@ pub const Type = extern union { |
| 49 | 49 | .f128, |
| 50 | 50 | => return .Float, |
| 51 | 51 | |
| 52 | | .c_void => return .Opaque, |
| 52 | .c_void, .@"opaque" => return .Opaque, |
| 53 | 53 | .bool => return .Bool, |
| 54 | 54 | .void => return .Void, |
| 55 | 55 | .type => return .Type, |
| ... | ... | @@ -449,6 +449,7 @@ pub const Type = extern union { |
| 449 | 449 | .@"enum" => return self, |
| 450 | 450 | .@"struct" => return self, |
| 451 | 451 | .@"union" => return self, |
| 452 | .@"opaque" => return self, |
| 452 | 453 | } |
| 453 | 454 | } |
| 454 | 455 | |
| ... | ... | @@ -680,10 +681,11 @@ pub const Type = extern union { |
| 680 | 681 | const payload = @fieldParentPtr(Payload.ErrorSetSingle, "base", ty.ptr_otherwise); |
| 681 | 682 | return out_stream.print("error{{{}}}", .{payload.name}); |
| 682 | 683 | }, |
| 683 | | // TODO improve |
| 684 | // TODO use declaration name |
| 684 | 685 | .@"enum" => return out_stream.writeAll("enum {}"), |
| 685 | 686 | .@"struct" => return out_stream.writeAll("struct {}"), |
| 686 | 687 | .@"union" => return out_stream.writeAll("union {}"), |
| 688 | .@"opaque" => return out_stream.writeAll("opaque {}"), |
| 687 | 689 | } |
| 688 | 690 | unreachable; |
| 689 | 691 | } |
| ... | ... | @@ -809,6 +811,7 @@ pub const Type = extern union { |
| 809 | 811 | .@"undefined", |
| 810 | 812 | .enum_literal, |
| 811 | 813 | .empty_struct, |
| 814 | .@"opaque", |
| 812 | 815 | => false, |
| 813 | 816 | }; |
| 814 | 817 | } |
| ... | ... | @@ -937,6 +940,7 @@ pub const Type = extern union { |
| 937 | 940 | .@"undefined", |
| 938 | 941 | .enum_literal, |
| 939 | 942 | .empty_struct, |
| 943 | .@"opaque", |
| 940 | 944 | => unreachable, |
| 941 | 945 | }; |
| 942 | 946 | } |
| ... | ... | @@ -960,6 +964,7 @@ pub const Type = extern union { |
| 960 | 964 | .enum_literal => unreachable, |
| 961 | 965 | .single_const_pointer_to_comptime_int => unreachable, |
| 962 | 966 | .empty_struct => unreachable, |
| 967 | .@"opaque" => unreachable, |
| 963 | 968 | |
| 964 | 969 | .u8, |
| 965 | 970 | .i8, |
| ... | ... | @@ -1143,6 +1148,7 @@ pub const Type = extern union { |
| 1143 | 1148 | .@"enum", |
| 1144 | 1149 | .@"struct", |
| 1145 | 1150 | .@"union", |
| 1151 | .@"opaque", |
| 1146 | 1152 | => false, |
| 1147 | 1153 | |
| 1148 | 1154 | .single_const_pointer, |
| ... | ... | @@ -1221,6 +1227,7 @@ pub const Type = extern union { |
| 1221 | 1227 | .@"enum", |
| 1222 | 1228 | .@"struct", |
| 1223 | 1229 | .@"union", |
| 1230 | .@"opaque", |
| 1224 | 1231 | => false, |
| 1225 | 1232 | |
| 1226 | 1233 | .const_slice, |
| ... | ... | @@ -1296,6 +1303,7 @@ pub const Type = extern union { |
| 1296 | 1303 | .@"enum", |
| 1297 | 1304 | .@"struct", |
| 1298 | 1305 | .@"union", |
| 1306 | .@"opaque", |
| 1299 | 1307 | => false, |
| 1300 | 1308 | |
| 1301 | 1309 | .single_const_pointer, |
| ... | ... | @@ -1380,6 +1388,7 @@ pub const Type = extern union { |
| 1380 | 1388 | .@"enum", |
| 1381 | 1389 | .@"struct", |
| 1382 | 1390 | .@"union", |
| 1391 | .@"opaque", |
| 1383 | 1392 | => false, |
| 1384 | 1393 | |
| 1385 | 1394 | .pointer => { |
| ... | ... | @@ -1459,6 +1468,7 @@ pub const Type = extern union { |
| 1459 | 1468 | .@"enum", |
| 1460 | 1469 | .@"struct", |
| 1461 | 1470 | .@"union", |
| 1471 | .@"opaque", |
| 1462 | 1472 | => false, |
| 1463 | 1473 | |
| 1464 | 1474 | .pointer => { |
| ... | ... | @@ -1580,6 +1590,7 @@ pub const Type = extern union { |
| 1580 | 1590 | .@"enum", |
| 1581 | 1591 | .@"struct", |
| 1582 | 1592 | .@"union", |
| 1593 | .@"opaque", |
| 1583 | 1594 | => unreachable, |
| 1584 | 1595 | |
| 1585 | 1596 | .array => self.cast(Payload.Array).?.elem_type, |
| ... | ... | @@ -1711,6 +1722,7 @@ pub const Type = extern union { |
| 1711 | 1722 | .@"enum", |
| 1712 | 1723 | .@"struct", |
| 1713 | 1724 | .@"union", |
| 1725 | .@"opaque", |
| 1714 | 1726 | => unreachable, |
| 1715 | 1727 | |
| 1716 | 1728 | .array => self.cast(Payload.Array).?.len, |
| ... | ... | @@ -1780,6 +1792,7 @@ pub const Type = extern union { |
| 1780 | 1792 | .@"enum", |
| 1781 | 1793 | .@"struct", |
| 1782 | 1794 | .@"union", |
| 1795 | .@"opaque", |
| 1783 | 1796 | => unreachable, |
| 1784 | 1797 | |
| 1785 | 1798 | .single_const_pointer, |
| ... | ... | @@ -1866,6 +1879,7 @@ pub const Type = extern union { |
| 1866 | 1879 | .@"enum", |
| 1867 | 1880 | .@"struct", |
| 1868 | 1881 | .@"union", |
| 1882 | .@"opaque", |
| 1869 | 1883 | => false, |
| 1870 | 1884 | |
| 1871 | 1885 | .int_signed, |
| ... | ... | @@ -1944,6 +1958,7 @@ pub const Type = extern union { |
| 1944 | 1958 | .@"enum", |
| 1945 | 1959 | .@"struct", |
| 1946 | 1960 | .@"union", |
| 1961 | .@"opaque", |
| 1947 | 1962 | => false, |
| 1948 | 1963 | |
| 1949 | 1964 | .int_unsigned, |
| ... | ... | @@ -2012,6 +2027,7 @@ pub const Type = extern union { |
| 2012 | 2027 | .@"enum", |
| 2013 | 2028 | .@"struct", |
| 2014 | 2029 | .@"union", |
| 2030 | .@"opaque", |
| 2015 | 2031 | => unreachable, |
| 2016 | 2032 | |
| 2017 | 2033 | .int_unsigned => .{ .signed = false, .bits = self.cast(Payload.IntUnsigned).?.bits }, |
| ... | ... | @@ -2098,6 +2114,7 @@ pub const Type = extern union { |
| 2098 | 2114 | .@"enum", |
| 2099 | 2115 | .@"struct", |
| 2100 | 2116 | .@"union", |
| 2117 | .@"opaque", |
| 2101 | 2118 | => false, |
| 2102 | 2119 | |
| 2103 | 2120 | .usize, |
| ... | ... | @@ -2213,6 +2230,7 @@ pub const Type = extern union { |
| 2213 | 2230 | .@"enum", |
| 2214 | 2231 | .@"struct", |
| 2215 | 2232 | .@"union", |
| 2233 | .@"opaque", |
| 2216 | 2234 | => unreachable, |
| 2217 | 2235 | }; |
| 2218 | 2236 | } |
| ... | ... | @@ -2294,6 +2312,7 @@ pub const Type = extern union { |
| 2294 | 2312 | .@"enum", |
| 2295 | 2313 | .@"struct", |
| 2296 | 2314 | .@"union", |
| 2315 | .@"opaque", |
| 2297 | 2316 | => unreachable, |
| 2298 | 2317 | } |
| 2299 | 2318 | } |
| ... | ... | @@ -2374,6 +2393,7 @@ pub const Type = extern union { |
| 2374 | 2393 | .@"enum", |
| 2375 | 2394 | .@"struct", |
| 2376 | 2395 | .@"union", |
| 2396 | .@"opaque", |
| 2377 | 2397 | => unreachable, |
| 2378 | 2398 | } |
| 2379 | 2399 | } |
| ... | ... | @@ -2454,6 +2474,7 @@ pub const Type = extern union { |
| 2454 | 2474 | .@"enum", |
| 2455 | 2475 | .@"struct", |
| 2456 | 2476 | .@"union", |
| 2477 | .@"opaque", |
| 2457 | 2478 | => unreachable, |
| 2458 | 2479 | }; |
| 2459 | 2480 | } |
| ... | ... | @@ -2531,6 +2552,7 @@ pub const Type = extern union { |
| 2531 | 2552 | .@"enum", |
| 2532 | 2553 | .@"struct", |
| 2533 | 2554 | .@"union", |
| 2555 | .@"opaque", |
| 2534 | 2556 | => unreachable, |
| 2535 | 2557 | }; |
| 2536 | 2558 | } |
| ... | ... | @@ -2608,6 +2630,7 @@ pub const Type = extern union { |
| 2608 | 2630 | .@"enum", |
| 2609 | 2631 | .@"struct", |
| 2610 | 2632 | .@"union", |
| 2633 | .@"opaque", |
| 2611 | 2634 | => unreachable, |
| 2612 | 2635 | }; |
| 2613 | 2636 | } |
| ... | ... | @@ -2685,6 +2708,7 @@ pub const Type = extern union { |
| 2685 | 2708 | .@"enum", |
| 2686 | 2709 | .@"struct", |
| 2687 | 2710 | .@"union", |
| 2711 | .@"opaque", |
| 2688 | 2712 | => false, |
| 2689 | 2713 | }; |
| 2690 | 2714 | } |
| ... | ... | @@ -2742,6 +2766,7 @@ pub const Type = extern union { |
| 2742 | 2766 | .error_union, |
| 2743 | 2767 | .error_set, |
| 2744 | 2768 | .error_set_single, |
| 2769 | .@"opaque", |
| 2745 | 2770 | => return null, |
| 2746 | 2771 | |
| 2747 | 2772 | .@"enum" => @panic("TODO onePossibleValue enum"), |
| ... | ... | @@ -2860,6 +2885,7 @@ pub const Type = extern union { |
| 2860 | 2885 | .@"enum", |
| 2861 | 2886 | .@"struct", |
| 2862 | 2887 | .@"union", |
| 2888 | .@"opaque", |
| 2863 | 2889 | => return false, |
| 2864 | 2890 | |
| 2865 | 2891 | .c_const_pointer, |
| ... | ... | @@ -2951,6 +2977,7 @@ pub const Type = extern union { |
| 2951 | 2977 | .@"enum" => &self.cast(Type.Payload.Enum).?.scope, |
| 2952 | 2978 | .@"struct" => &self.cast(Type.Payload.Struct).?.scope, |
| 2953 | 2979 | .@"union" => &self.cast(Type.Payload.Union).?.scope, |
| 2980 | .@"opaque" => &self.cast(Type.Payload.Union).?.scope, |
| 2954 | 2981 | }; |
| 2955 | 2982 | } |
| 2956 | 2983 | |
| ... | ... | @@ -3105,6 +3132,7 @@ pub const Type = extern union { |
| 3105 | 3132 | @"enum", |
| 3106 | 3133 | @"struct", |
| 3107 | 3134 | @"union", |
| 3135 | @"opaque", |
| 3108 | 3136 | |
| 3109 | 3137 | pub const last_no_payload_tag = Tag.const_slice_u8; |
| 3110 | 3138 | pub const no_payload_count = @enumToInt(last_no_payload_tag) + 1; |
| ... | ... | @@ -3221,6 +3249,12 @@ pub const Type = extern union { |
| 3221 | 3249 | scope: *Module.Scope.Container, |
| 3222 | 3250 | }; |
| 3223 | 3251 | |
| 3252 | pub const Opaque = struct { |
| 3253 | base: Payload = .{ .tag = .@"opaque" }, |
| 3254 | |
| 3255 | scope: Module.Scope.Container, |
| 3256 | }; |
| 3257 | |
| 3224 | 3258 | pub const Enum = @import("type/Enum.zig"); |
| 3225 | 3259 | pub const Struct = @import("type/Struct.zig"); |
| 3226 | 3260 | pub const Union = @import("type/Union.zig"); |