zig icon indicating copy to clipboard operation
zig copied to clipboard

ComptimeStringMap fails with comptime-only value type

Open nektro opened this issue 2 years ago • 0 comments

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

nektro avatar Dec 20 '23 01:12 nektro