mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
Sema: skip decl causing namespace lookup when doing lookup
This commit is contained in:
parent
0f820d0bdf
commit
eaa6b04c3c
@ -4967,6 +4967,8 @@ fn lookupInNamespace(
|
||||
var it = check_ns.usingnamespace_set.iterator();
|
||||
while (it.next()) |entry| {
|
||||
const sub_usingnamespace_decl_index = entry.key_ptr.*;
|
||||
// Skip the decl we're currently analysing.
|
||||
if (sub_usingnamespace_decl_index == sema.owner_decl_index) continue;
|
||||
const sub_usingnamespace_decl = mod.declPtr(sub_usingnamespace_decl_index);
|
||||
const sub_is_pub = entry.value_ptr.*;
|
||||
if (!sub_is_pub and src_file != sub_usingnamespace_decl.getFileScope()) {
|
||||
|
||||
@ -1086,3 +1086,26 @@ test "inline call of function with a switch inside the return statement" {
|
||||
};
|
||||
try expect(S.foo(1) == 1);
|
||||
}
|
||||
|
||||
test "namespace lookup ignores decl causing the lookup" {
|
||||
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
|
||||
const S = struct {
|
||||
fn Mixin(comptime T: type) type {
|
||||
return struct {
|
||||
fn foo() void {
|
||||
const set = std.EnumSet(T.E).init(undefined);
|
||||
_ = set;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const E = enum { a, b };
|
||||
usingnamespace Mixin(@This());
|
||||
};
|
||||
_ = S.foo();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user