ClangImporter: Ignore missing imports in SwiftDeclConverter::recordObjCOverride().

`recordObjCOverride()` records semantic overrides for imported Obj-C methods.
Since these methods are imported from a different language, it doesn't make
sense to enforce Swift's member import visibility rules when performing lookups
to find overridden methods. Doing so caused the Constrain Solver to lack
important information needed to eliminate overloads, resulting in erroneous
ambiguities.

Resolves rdar://141636723.
This commit is contained in:
Allan Shortlidge
2024-12-17 18:45:37 -08:00
parent 5dbe202087
commit 94e678da37
3 changed files with 20 additions and 3 deletions

View File

@@ -7226,9 +7226,9 @@ void SwiftDeclConverter::recordObjCOverride(AbstractFunctionDecl *decl) {
return;
// Dig out the Objective-C superclass.
SmallVector<ValueDecl *, 4> results;
superDecl->lookupQualified(superDecl, DeclNameRef(decl->getName()),
decl->getLoc(), NL_QualifiedDefault,
results);
superDecl->lookupQualified(
superDecl, DeclNameRef(decl->getName()), decl->getLoc(),
NL_QualifiedDefault | NL_IgnoreMissingImports, results);
for (auto member : results) {
if (member->getKind() != decl->getKind() ||
member->isInstanceMember() != decl->isInstanceMember() ||