mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
Move big enum tests to a standalone test case
This commit is contained in:
parent
0a931393c0
commit
44cd59a3ba
@ -1454,45 +1454,3 @@ test values {
|
||||
};
|
||||
try testing.expectEqualSlices(E, &.{ .X, .Y, .Z }, values(E));
|
||||
}
|
||||
|
||||
test "big enums should not hit the eval branch quota" {
|
||||
const big = struct {
|
||||
const Big = @Type(@as(std.builtin.Type, .{
|
||||
.Enum = .{
|
||||
.tag_type = u16,
|
||||
.fields = make_fields: {
|
||||
var fields: []const std.builtin.Type.EnumField = &.{};
|
||||
for (0..1999) |i| {
|
||||
fields = fields ++ &[_]std.builtin.Type.EnumField{.{
|
||||
.name = std.fmt.comptimePrint("field_{d}", .{i}),
|
||||
.value = i,
|
||||
}};
|
||||
}
|
||||
fields = fields ++ &[_]std.builtin.Type.EnumField{.{
|
||||
.name = "field_9999",
|
||||
.value = 9999,
|
||||
}};
|
||||
break :make_fields fields;
|
||||
},
|
||||
.decls = &.{},
|
||||
.is_exhaustive = true,
|
||||
},
|
||||
}));
|
||||
};
|
||||
|
||||
var set = EnumSet(big.Big).init(.{});
|
||||
_ = &set;
|
||||
|
||||
var map = EnumMap(big.Big, u8).init(undefined);
|
||||
map = EnumMap(big.Big, u8).initFullWith(undefined);
|
||||
map = EnumMap(big.Big, u8).initFullWithDefault(123, .{});
|
||||
|
||||
var multiset = EnumMultiset(big.Big).init(.{});
|
||||
_ = &multiset;
|
||||
|
||||
var bounded_multiset = BoundedEnumMultiset(big.Big, u8).init(.{});
|
||||
_ = &bounded_multiset;
|
||||
|
||||
var array = EnumArray(big.Big, u8).init(undefined);
|
||||
array = EnumArray(big.Big, u8).initDefault(123, .{});
|
||||
}
|
||||
|
||||
@ -49,6 +49,7 @@ pub const simple_cases = [_]SimpleCase{
|
||||
.{ .src_path = "test/standalone/main_return_error/error_u8_non_zero.zig" },
|
||||
.{ .src_path = "test/standalone/noreturn_call/inline.zig" },
|
||||
.{ .src_path = "test/standalone/noreturn_call/as_arg.zig" },
|
||||
.{ .src_path = "test/standalone/std_enums_big_enums.zig" },
|
||||
|
||||
.{
|
||||
.src_path = "test/standalone/issue_9402/main.zig",
|
||||
|
||||
38
test/standalone/std_enums_big_enums.zig
Normal file
38
test/standalone/std_enums_big_enums.zig
Normal file
@ -0,0 +1,38 @@
|
||||
const std = @import("std");
|
||||
|
||||
// big enums should not hit the eval branch quota
|
||||
pub fn main() void {
|
||||
const big = struct {
|
||||
const Big = @Type(@as(std.builtin.Type, .{
|
||||
.Enum = .{
|
||||
.tag_type = u16,
|
||||
.fields = make_fields: {
|
||||
var fields: [1001]std.builtin.Type.EnumField = undefined;
|
||||
for (&fields, 0..) |*field, i| {
|
||||
field.* = .{ .name = std.fmt.comptimePrint("field_{d}", .{i}), .value = i };
|
||||
}
|
||||
fields[1000] = .{ .name = "field_9999", .value = 9999 };
|
||||
break :make_fields &fields;
|
||||
},
|
||||
.decls = &.{},
|
||||
.is_exhaustive = true,
|
||||
},
|
||||
}));
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
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, .{});
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user