New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Function not visible inside itself through generic struct with usingnamespace #17872
Labels
Milestone
Comments
LordMZTE
added
the
bug
Observed behavior contradicts documented or intended behavior
label
Nov 5, 2023
LordMZTE
changed the title
Function not visible inside inside itself through generic function with usingnamespace
Function not visible inside itself through generic struct with usingnamespace
Nov 5, 2023
Equivalent to const B = struct {
pub fn func() void {
@compileLog(@typeInfo(C).Struct.decls); // .{ .{ .name = "func" } }
@compileLog(@hasDecl(C, "func")); // false
_ = C.func; // ERROR: no member named func
}
};
const C = struct {
pub usingnamespace B;
};
pub fn main() !void {
C.func();
} Is the circular dependency supposed to be allowed here? |
Dependency loops only happen when analyzing a declaration depends on the declaration already being analyzed. A function referencing itself does not require it to be analyzed. export fn foo() void {
foo();
} |
Also encountered this issue on both 0.12.0 and 0.13.0-dev.46+3648d7df1, maybe a simpler reproduction: const std = @import("std");
pub const Example = struct {
usingnamespace struct {}; // works without this line
pub fn foo() void {
_ = Example.foo; // error: struct 'main.Example' has no member named 'foo'
}
};
pub fn main() !void {
Example.foo();
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.zig
According to
@typeInfo
, the declarationfunc
is present within C, but according to@hasDecl
, it is not. Schrödinger's declaration!Expected Behavior
The code compiles.
The text was updated successfully, but these errors were encountered: