Skip to content

Commit 52509d6

Browse files
committed
[ClangImporter] Add a regression test for an refined explicit setter
Ensure that we don't import the setter as a separate property, or in a way that would clobber the refined property's lack of a setter in Swift.
1 parent 9f09add commit 52509d6

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

test/ClangImporter/Inputs/frameworks/CategoryOverrides.framework/Headers/CategoryOverrides.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ typedef enum {
3333
@property (nonatomic, readonly) RefinedSugar sugar /*NS_REFINED_FOR_SWIFT*/ __attribute__((swift_private));
3434
@end
3535

36+
@interface ExtraRefinery : Base
37+
@property (nonatomic, readonly) RefinedSugar sugar /*NS_REFINED_FOR_SWIFT*/ __attribute__((swift_private));
38+
@end
39+
3640
@protocol NullableProtocol
3741
@property (nonatomic, readonly, nullable) Base *requirement;
3842
@end

test/ClangImporter/Inputs/frameworks/CategoryOverrides.framework/PrivateHeaders/Private.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
@property (nonatomic, readwrite) RefinedSugar sugar;
2020
@end
2121

22+
@interface ExtraRefinery ()
23+
- (void)setSugar:(RefinedSugar)sugar;
24+
@end
25+
2226
@interface MyBaseClass () <NonNullProtocol>
2327
@end
2428

test/ClangImporter/objc_redeclared_properties_categories.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ func takesARefinery(_ x: Refinery) {
7878
x.sugar = .caster
7979
}
8080

81+
func takesAnExtraRefinery(_ x: ExtraRefinery) {
82+
// CHECK: has no member 'sugar'
83+
x.sugar = .caster
84+
x.setSugar(0)
85+
}
86+
8187
func nullabilityRefinementProto(_ x: MyBaseClass) {
8288
// CHECK-PUBLIC: has no member 'requirement'
8389
// CHECK-PRIVATE-NOT: has no member 'requirement'

0 commit comments

Comments
 (0)