1// RUN: %clang_cc1 -x objective-c++ -fcxx-exceptions -fsyntax-only -Werror -verify -Wno-objc-root-class %s 2// expected-no-diagnostics 3// rdar://10387088 4 5@interface MyClass 6- (void)someMethod; 7@end 8 9struct BadReturn { 10 BadReturn(MyClass * myObject); 11 int bar(MyClass * myObject); 12 void MemFunc(MyClass * myObject); 13 int i; 14 MyClass *CObj; 15}; 16 17@implementation MyClass 18- (void)someMethod { 19 [self privateMethod]; // clang already does not warn here 20} 21 22int BadReturn::bar(MyClass * myObject) { 23 [myObject privateMethod]; 24 return 0; 25} 26 27BadReturn::BadReturn(MyClass * myObject) try : CObj(myObject) { 28} catch(...) { 29 try { 30 [myObject privateMethod]; 31 [myObject privateMethod1]; 32 getMe = bar(myObject); 33 [CObj privateMethod1]; 34 } catch(int ei) { 35 i = ei; 36 } catch(...) { 37 { 38 i = 0; 39 } 40 } 41} 42 43void BadReturn::MemFunc(MyClass * myObject) try { 44} catch(...) { 45 try { 46 [myObject privateMethod]; 47 [myObject privateMethod1]; 48 getMe = bar(myObject); 49 [CObj privateMethod1]; 50 } catch(int ei) { 51 i = ei; 52 } catch(...) { 53 { 54 i = 0; 55 } 56 } 57} 58 59- (void)privateMethod { } 60 61- (void)privateMethod1 { 62 getMe = getMe+1; 63} 64 65static int getMe; 66 67@end 68