Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjCXX / delay-parsing-func-tryblock.mm
blob21f129ffd149d1b157a97648e1a96f3c2b991ea7
1 // RUN: %clang_cc1 -x objective-c++ -fcxx-exceptions -fsyntax-only -Werror -verify -Wno-objc-root-class %s
3 @interface MyClass
4 - (void)someMethod;
5 @end
7 struct BadReturn {
8   BadReturn(MyClass * myObject);
9   int bar(MyClass * myObject);
10   void MemFunc(MyClass * myObject);
11   int i;
12   MyClass *CObj;
15 @implementation MyClass
16 - (void)someMethod {
17     [self privateMethod];  // clang already does not warn here
20 int BadReturn::bar(MyClass * myObject) {
21     [myObject privateMethod];
22     return 0;
25 BadReturn::BadReturn(MyClass * myObject) try : CObj(myObject) {
26 } catch(...) {
27   try {
28     [myObject privateMethod];
29     [myObject privateMethod1];
30     getMe = bar(myObject); // expected-error {{cannot refer to a non-static member from the handler of a constructor function try block}}
31     [CObj privateMethod1]; // expected-error {{cannot refer to a non-static member from the handler of a constructor function try block}}
32   } catch(int ei) {
33     i = ei; // expected-error {{cannot refer to a non-static member from the handler of a constructor function try block}}
34   } catch(...) {
35     {
36       i = 0; // expected-error {{cannot refer to a non-static member from the handler of a constructor function try block}}
37     }
38   }
41 void BadReturn::MemFunc(MyClass * myObject) try {
42 } catch(...) {
43   try {
44     [myObject privateMethod];
45     [myObject privateMethod1];
46     getMe = bar(myObject);
47     [CObj privateMethod1];
48   } catch(int ei) {
49     i = ei;
50   } catch(...) {
51     {
52       i = 0;
53     }
54   }
57 - (void)privateMethod { }
59 - (void)privateMethod1 {
60   getMe = getMe+1;
63 static int getMe;
65 @end