| 1 | const std = @import("std"); |
| 2 | |
| 3 | // big enums should not hit the eval branch quota |
| 4 | pub fn main() void { |
| 5 | const big = struct { |
| 6 | const Big = Big: { |
| 7 | @setEvalBranchQuota(500000); |
| 8 | var names: [1001][]const u8 = undefined; |
| 9 | var values: [1001]u16 = undefined; |
| 10 | for (values[0..1000], names[0..1000], 0..1000) |*val, *name, i| { |
| 11 | name.* = std.fmt.comptimePrint("field_{d}", .{i}); |
| 12 | val.* = i; |
| 13 | } |
| 14 | names[1000] = "field_9999"; |
| 15 | values[1000] = 9999; |
| 16 | break :Big @Enum(u16, .exhaustive, &names, &values); |
| 17 | }; |
| 18 | }; |
| 19 | |
| 20 | var set = std.enums.EnumSet(big.Big).init(.{}); |
| 21 | _ = &set; |
| 22 | |
| 23 | var map = std.enums.EnumMap(big.Big, u8).init(undefined); |
| 24 | map = std.enums.EnumMap(big.Big, u8).initFullWith(undefined); |
| 25 | map = std.enums.EnumMap(big.Big, u8).initFullWithDefault(123, .{}); |
| 26 | |
| 27 | var multiset = std.enums.EnumMultiset(big.Big).init(.{}); |
| 28 | _ = &multiset; |
| 29 | |
| 30 | @setEvalBranchQuota(4000); |
| 31 | |
| 32 | var bounded_multiset = std.enums.BoundedEnumMultiset(big.Big, u8).init(.{}); |
| 33 | _ = &bounded_multiset; |
| 34 | |
| 35 | var array = std.enums.EnumArray(big.Big, u8).init(undefined); |
| 36 | array = std.enums.EnumArray(big.Big, u8).initDefault(123, .{}); |
| 37 | } |