I apologize in advance for the title of this issue.
Zig Version
0.12.0-dev.1396+f6de3ec96
Steps to Reproduce and Observed Behavior
- Create a file
bug.zig:
constB=struct {
pubfnfunc() void {
@compileLog(@typeInfo(C).Struct.decls); // .{ .{ .name = "func" } }@compileLog(@hasDecl(C, "func")); // false_=C.func; // ERROR: no member named func
}
};
fnA(comptimeT: type) type {
returnstruct {
pubusingnamespaceT;
};
}
constC=A(B);
pubfnmain() !void {
C.func();
}zig run bug.zig
bug.zig:5:14: error: struct 'bug.A(bug.B)' has no member named 'func'
_ = C.func; // ERROR: no member named func
~^~~~~
bug.zig:10:12: note: struct declared here
return struct {
^~~~~~
referenced by:
main: bug.zig:18:6
callMain: /home/lordmzte/.local/share/zupper/installs/master/lib/std/start.zig:581:32
remaining reference traces hidden; use '-freference-trace' to see all reference traces
Compile Log Output:
@as([]const builtin.Type.Declaration, .{ .{.name = "func"} })
@as(bool, false)
According to @typeInfo, the declaration func is present within C, but according to @hasDecl, it is not. Schrödinger's declaration!
Expected Behavior
The code compiles.
I apologize in advance for the title of this issue.
Zig Version
0.12.0-dev.1396+f6de3ec96
Steps to Reproduce and Observed Behavior
bug.zig:zig run bug.zigAccording to
@typeInfo, the declarationfuncis present within C, but according to@hasDecl, it is not. Schrödinger's declaration!Expected Behavior
The code compiles.