mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 00:35:10 +00:00
38 lines
1.2 KiB
Zig
38 lines
1.2 KiB
Zig
const std = @import("std");
|
|
|
|
// big enums should not hit the eval branch quota
|
|
pub fn main() void {
|
|
const big = struct {
|
|
const Big = Big: {
|
|
@setEvalBranchQuota(500000);
|
|
var names: [1001][]const u8 = undefined;
|
|
var values: [1001]u16 = undefined;
|
|
for (values[0..1000], names[0..1000], 0..1000) |*val, *name, i| {
|
|
name.* = std.fmt.comptimePrint("field_{d}", .{i});
|
|
val.* = i;
|
|
}
|
|
names[1000] = "field_9999";
|
|
values[1000] = 9999;
|
|
break :Big @Enum(u16, .exhaustive, &names, &values);
|
|
};
|
|
};
|
|
|
|
var set = std.enums.EnumSet(big.Big).init(.{});
|
|
_ = &set;
|
|
|
|
var map = std.enums.EnumMap(big.Big, u8).init(undefined);
|
|
map = std.enums.EnumMap(big.Big, u8).initFullWith(undefined);
|
|
map = std.enums.EnumMap(big.Big, u8).initFullWithDefault(123, .{});
|
|
|
|
var multiset = std.enums.EnumMultiset(big.Big).init(.{});
|
|
_ = &multiset;
|
|
|
|
@setEvalBranchQuota(4000);
|
|
|
|
var bounded_multiset = std.enums.BoundedEnumMultiset(big.Big, u8).init(.{});
|
|
_ = &bounded_multiset;
|
|
|
|
var array = std.enums.EnumArray(big.Big, u8).init(undefined);
|
|
array = std.enums.EnumArray(big.Big, u8).initDefault(123, .{});
|
|
}
|