Files
swift-mirror/test/ClangImporter/Inputs/custom-modules/ObjCSubscripts.h
Brent Royal-Gordon 473fe7027e Make sure we don’t support @objc class subscripts
Obj-C subscripts don’t work on class objects, but you can declare class methods with the appropriate names. We don’t want to half-support this. Emit an error if you try to write “@objc class subscript” and test that we don’t import the methods as subscripts.
2019-04-10 23:17:04 -07:00

70 lines
2.4 KiB
Objective-C

@import ObjectiveC;
@import Foundation;
@interface KeySubscript1 : NSObject
- (id)objectForKeyedSubscript:(NSString *)subscript;
- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
@end
@interface KeySubscript2 : NSObject
- (nullable id)objectForKeyedSubscript:(nonnull NSString *)subscript;
- (void)setObject:(nullable id)object forKeyedSubscript:(nonnull NSString *)key;
@end
@interface KeySubscript3 : NSObject
- (nullable NSString *)objectForKeyedSubscript:(nonnull NSString *)subscript;
- (void)setObject:(nullable NSString *)object forKeyedSubscript:(nonnull NSString *)key;
@end
@interface KeySubscript4 : NSObject
- (nullable NSString *)objectForKeyedSubscript:(nonnull NSArray *)subscript;
- (void)setObject:(nullable NSString *)object forKeyedSubscript:(nonnull NSArray *)key;
@end
@protocol KeySubscriptProto1
- (nullable NSString *)objectForKeyedSubscript:(nonnull NSString *)subscript;
@end
@protocol KeySubscriptProto2
- (NSString *)objectForKeyedSubscript:(NSString *)subscript;
- (void)setObject:(NSString *)object forKeyedSubscript:(NSString *)key;
@end
// rdar://problem/36033356 failed specifically when the base class was never
// subscripted, so please don't mention this class in the .swift file.
@interface KeySubscriptBase
- (id)objectForKeyedSubscript:(NSString *)subscript;
- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
@end
@interface KeySubscriptOverrideGetter : KeySubscriptBase
- (id)objectForKeyedSubscript:(NSString *)subscript;
@end
@interface KeySubscriptOverrideSetter : KeySubscriptBase
- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
@end
// rdar://problem/36033356 failed specifically when the base class was never
// subscripted, so please don't mention this class in the .swift file.
@interface KeySubscriptReversedBase
- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
- (id)objectForKeyedSubscript:(NSString *)subscript;
@end
@interface KeySubscriptReversedOverrideGetter : KeySubscriptReversedBase
- (id)objectForKeyedSubscript:(NSString *)subscript;
@end
@interface KeySubscriptReversedOverrideSetter : KeySubscriptReversedBase
- (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
@end
@interface NoClassSubscript : NSObject
+ (id)objectAtIndexedSubscript:(int)i;
+ (void)setObject:(id)obj atIndexedSubscript:(int)i;
+ (id)objectForKeyedSubscript:(NSString *)subscript;
+ (void)setObject:(id)object forKeyedSubscript:(NSString *)key;
@end