Commit 44cd59a3ba

Carl Åstholm <carl@astholm.se>
2024-03-12 00:53:09
Move big enum tests to a standalone test case
1 parent 0a93139
Changed files (3)
lib/std/enums.zig
@@ -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, .{});
-}
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, .{});
+}
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",