mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 14:25:16 +00:00
Sema: ignore current declaration in ambiguous reference error
Closes #12429
This commit is contained in:
parent
b3922289be
commit
c17793b487
11
src/Sema.zig
11
src/Sema.zig
@ -5384,6 +5384,17 @@ fn lookupInNamespace(
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
var i: usize = 0;
|
||||
while (i < candidates.items.len) {
|
||||
if (candidates.items[i] == sema.owner_decl_index) {
|
||||
_ = candidates.orderedRemove(i);
|
||||
} else {
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (candidates.items.len) {
|
||||
0 => {},
|
||||
1 => {
|
||||
|
||||
@ -1104,3 +1104,24 @@ test "namespace lookup ignores decl causing the lookup" {
|
||||
};
|
||||
_ = S.foo();
|
||||
}
|
||||
|
||||
test "ambiguous reference error ignores current declaration" {
|
||||
const S = struct {
|
||||
const foo = 666;
|
||||
|
||||
const a = @This();
|
||||
const b = struct {
|
||||
const foo = a.foo;
|
||||
const bar = struct {
|
||||
bar: u32 = b.foo,
|
||||
};
|
||||
|
||||
comptime {
|
||||
_ = b.foo;
|
||||
}
|
||||
};
|
||||
|
||||
usingnamespace b;
|
||||
};
|
||||
try expect(S.b.foo == 666);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user