|  | // 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 | 
|  |  | 
|  |  | 
|  |  | 
|  | #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]; | 
|  |  | 
|  | [self foo:nil]; | 
|  | // expected-warning@-1{{nil passed to a callee that requires a non-null 1st parameter}} | 
|  | // expected-note@-2   {{nil passed to a callee that requires a non-null 1st parameter}} | 
|  | } | 
|  | @end | 
|  |  |