Open
Description
Zig Version
0.11.0
Steps to Reproduce and Observed Behavior
With the following zig code:
const ecs_iter_next_action_t = ?*const fn (*ecs_iter_t) void;
const ecs_iter_t = struct { next: ecs_iter_next_action_t };
test {
_ = ecs_iter_next_action_t;
}
pub fn main() void {
var it = ecs_iter_t{ .next = &next_action };
it.next.?(&it);
}
fn next_action(it: *ecs_iter_t) void {
@import("std").debug.print("{any}\n", .{it});
}
Running zig run
yields the expected output:
main.ecs_iter_t{ .next = fn(*main.ecs_iter_t) void@220780 }
However when running zig test
(here with -freference-trace
), I get a dependency loop error:
main.zig:1:1: error: dependency loop detected
const ecs_iter_next_action_t = ?*const fn (*ecs_iter_t) void;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
referenced by:
ecs_iter_t: main.zig:2:20
ecs_iter_next_action_t: main.zig:1:45
ecs_iter_t: main.zig:2:35
Expected Behavior
No dependency loop.