|  | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s -Wselector -include %S/Inputs/chain-selectors1.h -include %S/Inputs/chain-selectors2.h | 
|  |  | 
|  | // RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -emit-pch -o %t1 %S/Inputs/chain-selectors1.h | 
|  | // RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -emit-pch -o %t2 %S/Inputs/chain-selectors2.h -include-pch %t1 | 
|  | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s -Wselector -include-pch %t2 | 
|  |  | 
|  | @implementation X | 
|  | -(void)f {} | 
|  | -(void)f2 {} | 
|  | -(void)g: (int)p {} | 
|  | -(void)h: (int)p1 foo: (int)p2 {} | 
|  | @end | 
|  |  | 
|  | void bar() { | 
|  | id a = 0; | 
|  | [a nothing]; // expected-warning {{method '-nothing' not found}} | 
|  | [a f]; | 
|  | // FIXME: Can't verify notes in headers | 
|  | //[a f2]; | 
|  |  | 
|  | (void)@selector(x); // expected-warning {{no method with selector 'x' is implemented in this translation unit}} | 
|  | (void)@selector(y); // expected-warning {{no method with selector 'y' is implemented in this translation unit}} | 
|  | (void)@selector(e); // expected-warning {{no method with selector 'e' is implemented in this translation unit}} | 
|  | } | 
|  |  | 
|  | @implementation X (Blah) | 
|  | - (void)test_Blah { | 
|  | [self blah_method]; | 
|  | } | 
|  |  | 
|  | - (void)blah_method { } | 
|  | @end | 
|  |  | 
|  | @implementation X (Blarg) | 
|  | - (void)test_Blarg { | 
|  | [self blarg_method]; | 
|  | } | 
|  |  | 
|  | - (void)blarg_method { } | 
|  | @end |