| #ifndef HEADER | 
 | #define HEADER | 
 |  | 
 | @interface I(cat) | 
 | -(void)meth; | 
 | @end | 
 |  | 
 | @interface I2 | 
 | -(void)meth; | 
 | @end | 
 |  | 
 | struct FFF1 | 
 | extern I2 *somevar1; | 
 |  | 
 | enum FFF2 | 
 | extern I2 *somevar2; | 
 |  | 
 | #else | 
 |  | 
 | void foo(I2 *i) { | 
 |   [i meth]; | 
 | } | 
 |  | 
 | #endif | 
 |  | 
 | // RUN: c-index-test -write-pch %t.h.pch %s -Xclang -detailed-preprocessing-record | 
 | // RUN: c-index-test -test-load-source local %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-PARSE %s | 
 | // RUN: c-index-test -index-file %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-INDEX %s | 
 |  | 
 | // CHECK-PARSE: pch-with-errors.m:{{.*}} FunctionDecl=foo | 
 | // CHECK-PARSE: pch-with-errors.m:{{.*}} ObjCMessageExpr=meth | 
 |  | 
 | // CHECK-INDEX: [indexDeclaration]: kind: function | name: foo | 
 | // CHECK-INDEX: [indexEntityReference]: kind: objc-instance-method | name: meth |