1__attribute__((objc_root_class)) 2@interface NSError 3@end 4 5__attribute__((objc_root_class)) 6@interface A 7@end 8 9struct X { }; 10 11void f1(int *x); // expected-warning{{pointer is missing a nullability type specifier}} 12 13typedef struct __attribute__((objc_bridge(NSError))) __CFError *CFErrorRef; 14typedef NSError *NSErrorPtr; 15typedef NSError **NSErrorPtrPtr; 16typedef CFErrorRef *CFErrorRefPtr; 17typedef int *int_ptr; 18typedef A *A_ptr; 19typedef int (^block_ptr)(int, int); 20 21#pragma clang assume_nonnull begin 22 23void f2(int *x); 24void f3(A* obj); 25void f4(int (^block)(int, int)); 26void f5(int_ptr x); 27void f6(A_ptr obj); 28void f7(int * _Nullable x); 29void f8(A * _Nullable obj); 30void f9(int X::* mem_ptr); 31void f10(int (X::*mem_func)(int, int)); 32void f11(int X::* _Nullable mem_ptr); 33void f12(int (X::* _Nullable mem_func)(int, int)); 34 35int_ptr f13(void); 36A *f14(void); 37 38int * _Null_unspecified f15(void); 39A * _Null_unspecified f16(void); 40void f17(CFErrorRef *error); // expected-note{{no known conversion from 'A * _Nonnull' to 'CFErrorRef _Nullable * _Nullable' (aka '__CFError **') for 1st argument}} 41void f18(A **); // expected-warning 2{{pointer is missing a nullability type specifier}} 42void f19(CFErrorRefPtr error); // expected-warning{{pointer is missing a nullability type specifier}} 43 44void g1(int (^)(int, int)); 45void g2(int (^ *bp)(int, int)); // expected-warning{{block pointer is missing a nullability type specifier}} 46// expected-warning@-1{{pointer is missing a nullability type specifier}} 47void g3(block_ptr *bp); // expected-warning{{block pointer is missing a nullability type specifier}} 48// expected-warning@-1{{pointer is missing a nullability type specifier}} 49void g4(int (*fp)(int, int)); 50void g5(int (**fp)(int, int)); // expected-warning 2{{pointer is missing a nullability type specifier}} 51 52@interface A(Pragmas1) 53+ (instancetype)aWithA:(A *)a; 54- (A *)method1:(A_ptr)ptr; 55- (null_unspecified A *)method2; 56- (void)method3:(NSError **)error; // expected-note{{passing argument to parameter 'error' here}} 57- (void)method4:(NSErrorPtr *)error; // expected-note{{passing argument to parameter 'error' here}} 58- (void)method5:(NSErrorPtrPtr)error; 59// expected-warning@-1{{pointer is missing a nullability type specifier}} 60 61@property A *aProp; 62@property NSError **anError; // expected-warning 2{{pointer is missing a nullability type specifier}} 63@end 64 65int *global_int_ptr; 66 67// typedefs not inferred _Nonnull 68typedef int *int_ptr_2; 69 70typedef int * // expected-warning{{pointer is missing a nullability type specifier}} 71 *int_ptr_ptr; 72 73static inline void f30(void) { 74 float *fp = global_int_ptr; // expected-error{{cannot initialize a variable of type 'float *' with an lvalue of type 'int * _Nonnull'}} 75 76 int_ptr_2 ip2; 77 float *fp2 = ip2; // expected-error{{cannot initialize a variable of type 'float *' with an lvalue of type 'int_ptr_2' (aka 'int *')}} 78 79 int_ptr_ptr ipp; 80 float *fp3 = ipp; // expected-error{{lvalue of type 'int_ptr_ptr' (aka 'int **')}} 81} 82 83@interface AA : A { 84@public 85 id ivar1; 86 _Nonnull id ivar2; 87} 88@end 89 90#pragma clang assume_nonnull end 91 92void f20(A *a); // expected-warning{{pointer is missing a nullability type specifier}} 93void f21(int_ptr x); // expected-warning{{pointer is missing a nullability type specifier}} 94void f22(A_ptr y); // expected-warning{{pointer is missing a nullability type specifier}} 95void f23(int_ptr _Nullable x); 96void f24(A_ptr _Nullable y); 97void f25(int_ptr_2 x); // expected-warning{{pointer is missing a nullability type specifier}} 98 99@interface A(OutsidePragmas1) 100+ (instancetype)aWithInt:(int)value; // expected-warning{{pointer is missing a nullability type specifier}} 101@end 102