aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Åstholm <carl@astholm.se>2024-03-12 00:53:09 +0100
committerCarl Åstholm <carl@astholm.se>2024-03-12 00:53:09 +0100
commit44cd59a3ba445f1ecf1c608302f375aede6e62dc (patch)
tree034fd7dd727b124df3872ef661d1f273d0175ca6 /test
parent0a931393c0f1a8b4882753ad37c303268ccaa7fa (diff)
downloadzig-44cd59a3ba445f1ecf1c608302f375aede6e62dc.tar.gz
zig-44cd59a3ba445f1ecf1c608302f375aede6e62dc.zip
Move big enum tests to a standalone test case
Diffstat (limited to 'test')
-rw-r--r--test/standalone.zig1
-rw-r--r--test/standalone/std_enums_big_enums.zig38
2 files changed, 39 insertions, 0 deletions
diff --git a/test/standalone.zig b/test/standalone.zig
index e72deb38ae..c8158364e2 100644
--- a/test/standalone.zig
+++ b/test/standalone.zig
@@ -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",
diff --git a/test/standalone/std_enums_big_enums.zig b/test/standalone/std_enums_big_enums.zig
new file mode 100644
index 0000000000..76237d3447
--- /dev/null
+++ b/test/standalone/std_enums_big_enums.zig
@@ -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, .{});
+}