#zig build-obj {
--name test -fno-emit-bin
-Mroot=test.zig
#}

#write test.zig {
fn foo() void {}
fn bar() void {}

export fn entry1() void {
    const TestFn = fn () void;
    const test_fns = [_]TestFn{ foo, bar };
    for (test_fns) |testFn| {
        testFn();
    }
}
export fn entry2() void {
    const TestFn = fn () void;
    const test_fns = [_]TestFn{ foo, bar };
    var i: usize = 0;
    _ = test_fns[i];
    _ = &i;
}
export fn entry3() void {
    const TestFn = fn () void;
    const test_fns = [_]TestFn{ foo, bar };
    var i: usize = 0;
    _ = &test_fns[i];
    _ = &i;
}
#}
#update
#check errors {
test.zig:7:10: error: values of type 'fn () void' must be comptime-known, but index value is runtime-known
test.zig:7:10: note: use '*const fn () void' for a function pointer type
test.zig:15:18: error: values of type 'fn () void' must be comptime-known, but index value is runtime-known
test.zig:15:17: note: use '*const fn () void' for a function pointer type
test.zig:22:19: error: values of type 'fn () void' must be comptime-known, but index value is runtime-known
test.zig:22:18: note: use '*const fn () void' for a function pointer type
#}
