Closed
Description
Zig Version
0.13.0
Steps to Reproduce and Observed Behavior
- Declare a non-exhaustive sparse
enum
- Try initializing the
EnumArray
viainit
orinitDefault
/EnumMap
viainitFullWith
orinitFullWithDefault
- -> compilation error similar to "no field with value '@enumFromInt(1)' in enum 'main.E'"
EnumArray
code example:
const std = @import("std");
pub fn main() !void {
const E = enum(u3) {
A = 0,
B = 1, // 2,
C = 2, // 4,
_,
};
const EA = std.EnumArray(E, []const u8).initDefault("default", .{
.A = "A",
.B = "B",
.C = "C",
});
std.debug.print("{s}\n", .{EA.get(E.A)});
}
Error message:
C:\Program Files\zigup\zig\0.13.0\files\lib\std\enums.zig:1094:29: error: no field with value '@enumFromInt(3)' in enum 'main.E'
const tag = @tagName(key);
^~~~~~~~~~~~~
src\main.zig:4:15: note: declared here
const E = enum(u3) {
^~~~
referenced by:
main: src\main.zig:11:56
callMain: C:\Program Files\zigup\zig\0.13.0\files\lib\std\start.zig:524:32
EnumMap
code example:
const std = @import("std");
pub fn main() !void {
const E = enum(u3) {
A = 0,
B = 1,
C = 2,
_,
};
const EM = std.EnumMap(E, []const u8).initFullWithDefault("default", .{
.A = "A",
.B = "B",
.C = "C",
});
std.debug.print("{?s}\n", .{EM.get(E.A)});
}
Error message:
C:\Program Files\zigup\zig\0.13.0\files\lib\std\enums.zig:507:29: error: no field with value '@enumFromInt(3)' in enum 'main.E'
const tag = @tagName(key);
^~~~~~~~~~~~~
src\main.zig:4:15: note: declared here
const E = enum(u3) {
^~~~
referenced by:
main: src\main.zig:11:62
callMain: C:\Program Files\zigup\zig\0.13.0\files\lib\std\start.zig:524:32
Expected Behavior
Successful compilation with valid behavior