1*67e74705SXin Li #ifndef SOMEKIT_H 2*67e74705SXin Li #define SOMEKIT_H 3*67e74705SXin Li 4*67e74705SXin Li __attribute__((objc_root_class)) 5*67e74705SXin Li #ifndef NS_ASSUME_NONNULL_BEGIN 6*67e74705SXin Li #if __has_feature(assume_nonnull) 7*67e74705SXin Li #define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") 8*67e74705SXin Li #define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") 9*67e74705SXin Li #else 10*67e74705SXin Li #define NS_ASSUME_NONNULL_BEGIN 11*67e74705SXin Li #define NS_ASSUME_NONNULL_END 12*67e74705SXin Li #endif 13*67e74705SXin Li #endif 14*67e74705SXin Li 15*67e74705SXin Li NS_ASSUME_NONNULL_BEGIN 16*67e74705SXin Li 17*67e74705SXin Li @interface A 18*67e74705SXin Li -(null_unspecified A*)transform:(null_unspecified A*)input __attribute__((unavailable("anything but this"))); 19*67e74705SXin Li -(A*)transform:(A*)input integer:(int)integer; 20*67e74705SXin Li 21*67e74705SXin Li @property (null_unspecified, nonatomic, readonly, retain) A* someA; 22*67e74705SXin Li @property (null_unspecified, nonatomic, retain) A* someOtherA; 23*67e74705SXin Li 24*67e74705SXin Li @property (nonatomic) int intValue __attribute__((unavailable("wouldn't work anyway"))); 25*67e74705SXin Li @end 26*67e74705SXin Li 27*67e74705SXin Li NS_ASSUME_NONNULL_END 28*67e74705SXin Li 29*67e74705SXin Li 30*67e74705SXin Li __attribute__((unavailable("just don't"))) 31*67e74705SXin Li @interface B : A 32*67e74705SXin Li @end 33*67e74705SXin Li 34*67e74705SXin Li @interface C : A 35*67e74705SXin Li - (instancetype)init; // expected-warning{{pointer is missing a nullability type specifier}} 36*67e74705SXin Li - (instancetype)initWithA:( A*)a __attribute__((objc_designated_initializer)); // expected-warning 2{{pointer is missing a nullability type specifier}} 37*67e74705SXin Li @end 38*67e74705SXin Li 39*67e74705SXin Li #endif 40*67e74705SXin Li 41