blob: b0227099c1e27f36934f93fdd21ce011ea91578f [file] [log] [blame]
Fariborz Jahanianbe1d4ec2012-08-10 15:54:40 +00001// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -Werror -verify -Wno-objc-root-class %s
2// rdar://10387088
3
4@interface MyClass
5- (void)someMethod;
6@end
7
8struct S {
9 int bar(MyClass * myObject);
10
11 int gorfbar(MyClass * myObject);
12
Fariborz Jahanian9e5df312012-08-10 21:15:06 +000013 S();
14 S(MyClass *O1, MyClass *O2);
15 S(MyClass *O1);
16
17 MyClass * Obj1, *Obj2;
18
Fariborz Jahanianbe1d4ec2012-08-10 15:54:40 +000019};
20
21@implementation MyClass
22- (void)someMethod {
23 [self privateMethod]; // clang already does not warn here
24}
25
26int S::bar(MyClass * myObject) {
27 [myObject privateMethod];
28 return gorfbar(myObject);
29}
30- (void)privateMethod { }
31
32int S::gorfbar(MyClass * myObject) {
33 [myObject privateMethod];
34 [myObject privateMethod1];
35 return getMe + bar(myObject);
36}
37
Fariborz Jahanian9e5df312012-08-10 21:15:06 +000038S::S(MyClass *O1, MyClass *O2) : Obj1(O1), Obj2(O2) {
39 [O1 privateMethod];
40 [O2 privateMethod1];
41}
42S::S(MyClass *O1) : Obj1(O1){ Obj2 = 0; }
43
44S::S() {}
45
Fariborz Jahanianbe1d4ec2012-08-10 15:54:40 +000046- (void)privateMethod1 {
47 getMe = getMe+1;
48}
49
50static int getMe;
51
52@end