| // RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\ |
| // RUN: -analyzer-output=text -verify %s |
| // RUN: %clang_analyze_cc1 -w -analyzer-checker=core,nullability\ |
| // RUN: -analyzer-output=text -verify %s -fobjc-arc |
| |
| #if !__has_feature(objc_arc) |
| // expected-no-diagnostics |
| #endif |
| |
| |
| #define nil ((id)0) |
| |
| @interface Param |
| @end |
| |
| @interface Base |
| - (void)foo:(Param *_Nonnull)param; |
| @end |
| |
| @interface Derived : Base |
| @end |
| |
| @implementation Derived |
| - (void)foo:(Param *)param { |
| // FIXME: Why do we not emit the warning under ARC? |
| [super foo:param]; |
| #if __has_feature(objc_arc) |
| // expected-warning@-2{{nil passed to a callee that requires a non-null 1st parameter}} |
| // expected-note@-3 {{nil passed to a callee that requires a non-null 1st parameter}} |
| #endif |
| |
| [self foo:nil]; |
| #if __has_feature(objc_arc) |
| // expected-note@-2{{Calling 'foo:'}} |
| // expected-note@-3{{Passing nil object reference via 1st parameter 'param'}} |
| #endif |
| } |
| @end |
| |