
The problem was that an enum without closing semicolon could be associated as a forward enum in an erroneous declaration, leading to the identifier being associated with the enum decl but without a declaration actually referencing it. This resulted in not having it serialized before serializing the identifier that is associated with. Also prevent the ASTUnit from querying the serialized DeclID for an invalid top-level decl; it may not have been serialized. rdar://14539667 llvm-svn: 187914
35 lines
835 B
Objective-C
35 lines
835 B
Objective-C
#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
|