Sema: ignore current declaration in ambiguous reference error

Closes #12429
This commit is contained in:
Veikka Tuominen 2022-08-16 16:37:27 +03:00
parent b3922289be
commit c17793b487
2 changed files with 32 additions and 0 deletions

View File

@ -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 => {

View File

@ -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);
}