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 -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
3
4typedef struct objc_class *Class;
5typedef struct objc_object {
6    Class isa;
7} *id;
8
9extern int printf(const char *, ...);
10
11int main() {
12  @try {
13  }
14  @finally {
15  }
16  while (1) {
17    @try {
18      printf("executing try");
19      break;
20    } @finally {
21      printf("executing finally");
22    }
23    printf("executing after finally block");
24  }
25  @try {
26    printf("executing try");
27  } @finally {
28    printf("executing finally");
29  }
30  return 0;
31}
32
33void test2_try_with_implicit_finally() {
34    @try {
35        return;
36    } @catch (id e) {
37
38    }
39}
40
41void FINALLY();
42void TRY();
43void CATCH();
44
45@interface NSException
46@end
47
48@interface Foo
49@end
50
51@implementation Foo
52- (void)bar {
53    @try {
54	TRY();
55    }
56    @catch (NSException *e) {
57	CATCH();
58    }
59    @finally {
60	FINALLY();
61    }
62}
63@end
64