llvm-project/clang/test/Index/pch-with-errors.m
Argyrios Kyrtzidis acfbbd77f8 [PCH] Fix a PCH serialization crash, with invalid code related to forward enum references.
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
2013-08-07 21:17:33 +00:00

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