Handle lookup into Builtin with module selector

Lookups like Builtin::Int64 were failing because BuiltinUnit rejected all unqualified lookups. Make it allow unqualified lookups with a module selector.
This commit is contained in:
Becca Royal-Gordon
2025-08-20 15:00:19 -07:00
parent 7bf14de2e6
commit ffaa35810c
16 changed files with 85 additions and 41 deletions

View File

@@ -104,9 +104,6 @@ BuiltinUnit::LookupCache &BuiltinUnit::getCache() const {
void BuiltinUnit::LookupCache::lookupValue(
Identifier Name, NLKind LookupKind, const BuiltinUnit &M,
SmallVectorImpl<ValueDecl*> &Result) {
// Only qualified lookup ever finds anything in the builtin module.
if (LookupKind != NLKind::QualifiedLookup) return;
ValueDecl *&Entry = Cache[Name];
ASTContext &Ctx = M.getParentModule()->getASTContext();
if (!Entry) {
@@ -1073,6 +1070,11 @@ void ModuleDecl::lookupAvailabilityDomains(
void BuiltinUnit::lookupValue(DeclName name, NLKind lookupKind,
OptionSet<ModuleLookupFlags> Flags,
SmallVectorImpl<ValueDecl*> &result) const {
// Only qualified lookup ever finds anything in the builtin module.
if (lookupKind != NLKind::QualifiedLookup
&& !Flags.contains(ModuleLookupFlags::HasModuleSelector))
return;
getCache().lookupValue(name.getBaseIdentifier(), lookupKind, *this, result);
}