Skip to content

Commit b90e96f

Browse files
authored
Merge pull request #72759 from beccadax/objcimpl-implonly-6.0
🌸 Support objcImpl + implementationOnly
2 parents 8d742ee + 8b8939d commit b90e96f

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ ExportContext::ExportContext(
6565
bool swift::isExported(const ValueDecl *VD) {
6666
if (VD->getAttrs().hasAttribute<ImplementationOnlyAttr>())
6767
return false;
68+
if (VD->isObjCMemberImplementation())
69+
return false;
6870

6971
// Is this part of the module's API or ABI?
7072
AccessScope accessScope =
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@import Foundation;
2+
3+
@interface InternalObjCClass : NSObject
4+
5+
- (void)methodFromHeader1:(int)param;
6+
7+
@end
8+

test/decl/ext/Inputs/objc_implementation_private.modulemap

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ module objc_implementation_private {
22
header "objc_implementation.h"
33
export *
44
}
5+
module objc_implementation_internal {
6+
header "objc_implementation_internal.h"
7+
export *
8+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: %target-typecheck-verify-swift -Xcc -fmodule-map-file=%S/Inputs/objc_implementation_private.modulemap
2+
// REQUIRES: objc_interop
3+
4+
@_implementationOnly import objc_implementation_internal
5+
6+
@_objcImplementation extension InternalObjCClass {
7+
@objc public func method(fromHeader1: CInt) {
8+
// OK
9+
}
10+
}

0 commit comments

Comments
 (0)