Skip to content

Commit 67bfa61

Browse files
authored
Merge pull request #78266 from tshortli/member-import-visibility-imported-objc-overrides-6.1
[6.1] ClangImporter: Ignore missing imports in `SwiftDeclConverter::recordObjCOverride()`
2 parents 32ca643 + 57cb93a commit 67bfa61

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

lib/ClangImporter/ImportDecl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7165,9 +7165,9 @@ void SwiftDeclConverter::recordObjCOverride(AbstractFunctionDecl *decl) {
71657165
return;
71667166
// Dig out the Objective-C superclass.
71677167
SmallVector<ValueDecl *, 4> results;
7168-
superDecl->lookupQualified(superDecl, DeclNameRef(decl->getName()),
7169-
decl->getLoc(), NL_QualifiedDefault,
7170-
results);
7168+
superDecl->lookupQualified(
7169+
superDecl, DeclNameRef(decl->getName()), decl->getLoc(),
7170+
NL_QualifiedDefault | NL_IgnoreMissingImports, results);
71717171
for (auto member : results) {
71727172
if (member->getKind() != decl->getKind() ||
71737173
member->isInstanceMember() != decl->isInstanceMember() ||
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
@import Categories_A;
22

3+
@interface NSObject (BridgingHeader)
4+
- (void)overridesCategoryMethodOnNSObject;
5+
@end
6+
37
@interface X (BridgingHeader)
48
- (void)fromBridgingHeader;
9+
- (void)overridesCategoryMethodOnNSObject;
510
@end
611

712
struct StructInBridgingHeader {
813
int member;
914
};
15+
16+
@interface ObjectInBridgingHeader : NSObject
17+
- (void)overridesCategoryMethodOnNSObject;
18+
@end

test/NameLookup/members_transitive_objc.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func test(x: X) {
2424
x.fromOverlayForC() // expected-member-visibility-error {{instance method 'fromOverlayForC()' is not available due to missing import of defining module 'Categories_C'}}
2525
x.fromSubmoduleOfD() // expected-member-visibility-error {{instance method 'fromSubmoduleOfD()' is not available due to missing import of defining module 'Categories_D'}}
2626
x.fromBridgingHeader()
27+
x.overridesCategoryMethodOnNSObject()
2728
}
2829

2930
func testAnyObject(a: AnyObject) {
@@ -37,6 +38,7 @@ func testAnyObject(a: AnyObject) {
3738
a.fromC() // expected-error {{value of type 'AnyObject' has no member 'fromC'}}
3839
a.fromOverlayForCObjC() // expected-error {{value of type 'AnyObject' has no member 'fromOverlayForCObjC'}}
3940
a.fromBridgingHeader()
41+
a.overridesCategoryMethodOnNSObject()
4042
}
4143

4244
extension StructInBridgingHeader {
@@ -48,3 +50,9 @@ extension StructInBridgingHeader {
4850
return member
4951
}
5052
}
53+
54+
extension ObjectInBridgingHeader {
55+
func test() {
56+
overridesCategoryMethodOnNSObject()
57+
}
58+
}

0 commit comments

Comments
 (0)