1// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
3
4extern "C" {
5@class XX;
6@class YY, ZZ, QQ;
7@class ISyncClient, SMSession, ISyncManager, ISyncSession, SMDataclassInfo, SMClientInfo,
8    DMCConfiguration, DMCStatusEntry;
9
10@interface QQ
11
12@end
13
14@interface SMDataclassInfo : QQ
15- (XX*) Meth;
16- (DMCStatusEntry*)Meth2;
17@end
18
19@implementation SMDataclassInfo
20- (XX*) Meth { return 0; }
21- (DMCStatusEntry*)Meth2 { return 0; }
22@end
23
24@interface YY
25{
26  ISyncClient *p1;
27  ISyncSession *p2;
28}
29@property (copy) ISyncClient *p1;
30@end
31
32@implementation YY
33@synthesize p1;
34@end
35
36extern "C" {
37@class CCC;
38@class Protocol, P , Q;
39int I,J,K;
40};
41
42};
43
44
45// rdar://15027032
46@interface ISDPropertyChangeGroup
47@end
48
49@implementation ISDPropertyChangeGroup
50@class ISDClientState;
51- (id)lastModifiedGeneration : (ISDClientState *) obj
52{
53  return obj ;
54}
55@end
56