// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -Werror -verify -Wno-objc-root-class %s
// expected-no-diagnostics

@interface MyClass
- (void)someMethod;
@end

struct S {
  int bar(MyClass * myObject);

  int gorfbar(MyClass * myObject);

  S();
  S(MyClass *O1, MyClass *O2);
  S(MyClass *O1);

  MyClass * Obj1, *Obj2;

};

@implementation MyClass
- (void)someMethod {
    [self privateMethod];  // clang already does not warn here
}

int S::bar(MyClass * myObject) {
    [myObject privateMethod]; 
    return gorfbar(myObject);
}
- (void)privateMethod { }

int S::gorfbar(MyClass * myObject) {
    [myObject privateMethod]; 
    [myObject privateMethod1]; 
    return getMe + bar(myObject);
}

S::S(MyClass *O1, MyClass *O2) : Obj1(O1), Obj2(O2) {
    [O1 privateMethod]; 
    [O2 privateMethod1]; 
}
S::S(MyClass *O1) : Obj1(O1){ Obj2 = 0; }

S::S() {}

- (void)privateMethod1 {
  getMe = getMe+1;
}

static int getMe;

@end
