zig
zig copied to clipboard
ComptimeStringMap fails with comptime-only value type
Zig Version
0.12.0-dev.1802+56deb5b05
Steps to Reproduce and Observed Behavior
const std = @import("std");
const extensions = std.ComptimeStringMap(type, .{
.{ "bmp", struct {
pub const foo = 1;
} },
.{ "qoi", struct {
pub const foo = 2;
} },
.{ "png", struct {
pub const foo = 3;
} },
.{ "jpg", struct {
pub const foo = 4;
} },
.{ "gif", struct {
pub const foo = 5;
} },
});
test {
const T = comptime extensions.get("png").?;
try std.testing.expect(T.foo == 3);
}
/home/meghan/src/zig/lib/std/comptime_string_map.zig:64:29: error: parameter of type 'comptime_string_map.ComptimeStringMapWithEql__struct_965' must be declared comptime
pub fn lessThan(ctx: @This(), a: usize, b: usize) bool {
^~~~~~~~~~~~
/home/meghan/src/zig/lib/std/comptime_string_map.zig:62:18: note: struct requires comptime because of this field
kvs: []KV,
^~~~
/home/meghan/src/zig/lib/std/comptime_string_map.zig:50:20: note: struct requires comptime because of this field
value: V,
^
/home/meghan/src/zig/lib/std/comptime_string_map.zig:50:20: note: types are not available at runtime
value: V,
^
/home/meghan/src/zig/lib/std/comptime_string_map.zig:61:29: note: struct declared here
const SortContext = struct {
^~~~~~
referenced by:
insertionContext: /home/meghan/src/zig/lib/std/sort.zig:48:33
pdqContext: /home/meghan/src/zig/lib/std/sort/pdq.zig:65:27
pdqContext: /home/meghan/src/zig/lib/std/sort.zig:11:47
sortUnstableContext: /home/meghan/src/zig/lib/std/mem.zig:586:13
ComptimeStringMapWithEql: /home/meghan/src/zig/lib/std/comptime_string_map.zig:72:12
ComptimeStringMap: /home/meghan/src/zig/lib/std/comptime_string_map.zig:14:12
ComptimeStringMap: /home/meghan/src/zig/lib/std/std.zig:19:50
extensions: test2.zig:3:23
test_0: test2.zig:22:24
Expected Behavior
all test passed